您應該只能使用提交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
我可以得到所有c46bac
和1a443
之間的變化很輕鬆地:
$ git diff-tree -r --name-only c46bac 1a443
public/checkout.en.html
public/customers.en.html
public/finish.en.html
但請注意,它不包含對提交c46bac
中public/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
它看起來像它只是從最近的命令 – Trev
相隔多遠是你兩次提交返回文件提交,不管什麼順序他們在?如果一個人只是另一個人的父母,那麼你就得到了正確的答案。但是,如果兩者相差甚遠......我會嘗試一些。 – slashingweapon
他們彼此相鄰。而且我證實,當我單獨使用每個提交ID時,我會得到不同的文件列表。 – Trev