2012-11-01 81 views

回答

6

您應該只能使用提交ID。例如:

git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT 218d182e 3ef44d29d 

如果你想在變化提交3ef44d29d那麼則需要由ID或3ef44d29d^指定其父。

下面是一些例子,來自我自己的一個項目。在歷史倒退,我有如下的提交:

1a443 
fb4ae 
88226 
c46ba 

我從各種命令的輸出如下:

$ git diff-tree -r --name-only 1a443 
1a443831fa9f797fedb397e900bd3d45e2093ea6 
public/customers.en.html 
$ git diff-tree -r --name-only fb4ae 
fb4ae4af0ac473b8547ec1717d4b4172c0d634f4 
public/checkout.en.html 
$ git diff-tree -r --name-only 88226 
88226fec6f1082b1dffd266d3e1bd0dc38cca520 
public/finish.en.html 
$ git diff-tree -r --name-only c46bac 
c46bacddee7785599c2f026f53cd93357e8ad30d 
public/index.php 

我可以得到所有c46bac1a443之間的變化很輕鬆地:

$ git diff-tree -r --name-only c46bac 1a443 
public/checkout.en.html 
public/customers.en.html 
public/finish.en.html 

但請注意,它不包含對提交c46bacpublic/index.php的更改。我們真正想要的是使用該提交的作爲比較的起點。

$ git diff-tree -r --name-only c46bac^ 1a443 
public/checkout.en.html 
public/customers.en.html 
public/finish.en.html 
public/index.php 
+0

它看起來像它只是從最近的命令 – Trev

+0

相隔多遠是你兩次提交返回文件提交,不管什麼順序他們在?如果一個人只是另一個人的父母,那麼你就得到了正確的答案。但是,如果兩者相差甚遠......我會嘗試一些。 – slashingweapon

+0

他們彼此相鄰。而且我證實,當我單獨使用每個提交ID時,我會得到不同的文件列表。 – Trev

0

git diff --name-only commit1..commit2