当更改还原其他更改时,列出提交范围内的更改



>假设我有以下 git 存储库,其中在提交 #2 中添加了一个文件并在提交 #3 中删除了该文件:

commit de36dee94ab54ab61dd2c6e9164756c1a608bd13 (HEAD -> master)
Author: Keith <keith>
Date:   Tue Sep 25 09:57:45 2018 -0500
#3
foo.txt | 1 -
1 file changed, 1 deletion(-)
commit 1fddf03367b9e2e4b65f96f4fc5db7d7d353f50c
Author: Keith <keith>
Date:   Tue Sep 25 09:57:37 2018 -0500
#2
foo.txt | 1 +
1 file changed, 1 insertion(+)
commit 4ab9494db091077879a74a47f83fe568a7efd133
Author: Keith <keith>
Date:   Tue Sep 25 09:57:23 2018 -0500
#1
README.md | 1 +
1 file changed, 1 insertion(+)

现在假设我对提交范围#1-#3 中所做的更改的摘要感兴趣。 如果我只是做git diff HEAD 4ab9494db,我将得不到任何输出,因为存储库在开始和结束时处于相同的状态;我永远不会看到在那个时间范围内出现和消失的文件foo.txt。我也可以如上所述git log --stat,但假设这是一个更大的存储库,历史更长,这可能会变得相当麻烦。

有没有办法获得所有更改文件的简洁摘要,即使一个更改"抵消"了另一个更改?

如果您只对文件名感兴趣:

git log --name-only --format='' | sort -u

--name-only将输出提交补丁中更改(添加/删除/修改(的所有文件。

最新更新