如何在git中显示从提交添加的文件?

时间:2013-10-19 20:55:15

标签: git version-control

如果我有一个给定的提交SHA,那么只显示通过该提交添加的文件的最佳方法是什么?感谢。

2 个答案:

答案 0 :(得分: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-Asubtopic-Bsubtopic-C合并到topicxyzsubtopic-B中都存在文件topicsubtopic-A,但subtopic-Cxyz中没有。是topic“已添加”?

编辑:如果“添加”的定义意味着“不是大多数人在合并之前称之为'主线'”,那么这个命令就可以了。也就是说,如果您在上面的分支topic上,并且您将一个或多个其他分支合并到galumph,并且当topic执行时,最终合并提交包含文件galumph之前没有名为{{1}}的文件,这将被视为“已添加”(无论合并分支中的哪个,如果有的话)。

答案 1 :(得分:0)

经过一番研究后,这似乎是一个非常可靠的解决方案。

git show -m --name-status -1 -U | grep $'A \ t'