2013-10-19 74 views
0

如果我有一個給定的提交SHA,只顯示通過該提交添加的文件的最佳方式是什麼?謝謝。如何顯示從git提交中添加的文件?

+1

的可能重複[列表中的所有文件在Git的提交(http://stackoverflow.com/questions/424071/list-all-the-files-for-a-commit -in-git) – lurker

+0

該答案沒有指定如何過濾僅通過提交添加的文件的提交。 – Monwe

+0

'git show --name-status SHA'或'git show --name-only SHA'如何? – lurker

回答

0

經過多一點研究,這似乎是一個非常可靠的解決方案。

混帳顯示-m --name狀態-1 -U | grep的$ 'A \ T'

+0

請注意,如果您將'feature'合併到'master'中,並且'master'中有一個文件'',則回答「添加文件意味着什麼」 yoink'不在'feature'中,你會看到它(儘管'master'可能被認爲是這裏的「主線」)。 – torek

2

「最佳」是棘手的(這是什麼的雪糕最好的味道?),但也有很多的方法。

最短輸出,但假定提交不是合併[編輯:或者,好,見下文]:

git diff --name-only --diff-filter=A <id>^ <id> 
使用這種

最簡單的方法可能是用git的別名:

git config alias.files-added '!git diff --name-only --diff-filter=A $1^' 

(注意,不帶參數運行git files-added會給一個奇怪的「壞版本」的消息,但哦)。

如果您需要處理合並提交,你必須決定是什麼意思,「添加文件」。添加的文件是否不在父母的任何?如果它不是在父母全部?例如,假設你已經合併subtopic-A,​​,並subtopic-Ctopic,並提交xyz是存在於​​和topic,但不存在於任何subtopic-Asubtopic-C。是xyz「加」?

編輯:如果「添加」來定義「中的大多數會召喚‘主線’在合併之前是不是」,這個命令會工作。也就是說,如果你在分支topic如上,你合併一個或多個其他分支到topic,並最終合併提交包含文件galumphtopic沒有命名galumph之前,這會被認爲是「加」文件(無論合併後的分支機構是否擁有它)。

相關問題