Git 如何找到与修改文件最相似的提交?

Git 如何找到与修改文件最相似的提交?,git,diff,similarity,Git,Diff,Similarity,我最近收到了对我的一个文件的修改,我将其置于修订控制之下,但我无法发现这个修改后的文件是基于哪个提交的 那么,有没有一种方法可以确定修改给定文件的哪个提交与编辑版本的差异最小?我不知道有什么神奇的方法可以检查这一点,但您可能想尝试一下: git diff --stat HEAD..HEAD~10 -- myfile.cpp 并手动更换头部~10 它将告诉您修订版之间有多少差异 您可以使用以下方法自动执行此操作: for i in {1..5}; do echo "HEAD~$i"; git d

我最近收到了对我的一个文件的修改,我将其置于修订控制之下,但我无法发现这个修改后的文件是基于哪个提交的


那么,有没有一种方法可以确定修改给定文件的哪个提交与编辑版本的差异最小?

我不知道有什么神奇的方法可以检查这一点,但您可能想尝试一下:

git diff --stat HEAD..HEAD~10 -- myfile.cpp
并手动更换头部~10

它将告诉您修订版之间有多少差异

您可以使用以下方法自动执行此操作:

for i in {1..5}; do echo "HEAD~$i"; git diff --stat HEAD~$i..HEAD CMakeLists.txt ; done

相关:谢谢,我可以通过管道将
git diff--stat
的输出传输到
grep myfile.cpp | gawk'{print$3}'
以减少更改量。我猜,与for loop一起,可以使用
sort
来获得最佳候选对象,并手动检查它们的差异,而不是for loop,可以使用
git log--stat myfile.cpp
,再加上一些智能的
gawk
,输出可能会被格式化成类似“commitid howManyChanges”的格式(我对
awk
了解不够)
git log--numstat--oneline--myfile.cpp
提供了一个漂亮而简短的输出(好的,添加了足够的注释…)