列出Git提交之间所有变更文件及其变更状态(新增、修改、删除)。

41

我经常使用以下命令来列出在两个提交之间更改的文件:

git diff --name-only SHA1 SHA2

它会列出文件,类似于这样:

/src/example/file1
/src/example/file2
/src/example/file3

这对于使用非常有用。

我真的很想能够在每个文件旁边显示一个简短的参考更改状态,指示文件是添加、修改还是删除。

以下示例演示了该概念:

git diff --name-only --and-how-me-the-change-status SHA1 SHA2
一个 /src/example/file1
修改 /src/example/file2
删除 /src/example/file3

更改状态(A,M,D)仅作为示例显示,只要它不含糊,我就无所谓。

我知道可以使用--diff-filter选项仅列出添加的文件,或仅列出修改的文件或仅列出已删除的文件。 使用此选项意味着我必须运行三个命令才能获取三个文件名列表。 这很好,但可以更好。

是否有一种单个命令可以给我上面的示例输出?


1
这个问题不是https://dev59.com/eHI_5IYBdhLWcg3wDOdC的重复。它非常具体地询问如何显示文件状态,而不仅仅是文件列表。 - Sean the Bean
1个回答

92

使用--name-status,它与--name-only相同,只不过会显示更改文件的状态:

git diff --name-status SHA1 SHA2

2
太棒了,运行得很顺畅! - Jon Cram
1
另外,请确保不要错放SHA1和SHA2。否则,它会写入“A”(已添加)而不是“D”(已删除),反之亦然。 - Stichoza
2
在Windows或Linux中按更改状态排序:git diff --name-status SHA1 SHA2 | sort - jdforsythe
不错!你有办法增加一些颜色吗? :) - jo_

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接