【发布时间】:2012-01-20 09:43:06
【问题描述】:
我最近收到了我的一个文件的修改,我将它置于修订控制之下,但我无法确定这个修改后的文件是基于哪个提交。
那么,有没有办法确定修改给定文件的哪个提交与已编辑版本的差异最小?
【问题讨论】:
标签: git diff similarity
我最近收到了我的一个文件的修改,我将它置于修订控制之下,但我无法确定这个修改后的文件是基于哪个提交。
那么,有没有办法确定修改给定文件的哪个提交与已编辑版本的差异最小?
【问题讨论】:
标签: git diff similarity
我不知道有什么神奇的方法可以检查这个,但你可能想试试这个:
git diff --stat HEAD..HEAD~10 -- myfile.cpp
并手动更改 HEAD~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 循环一起,然后可以使用 sort 来获得最佳候选人并手动查看他们的差异
git log --stat myfile.cpp,然后再用一些聪明的gawking,输出可能会被格式化为“commitid howManyChanges”之类的东西(我不太了解awk 虽然)
git log --numstat --oneline -- myfile.cpp 提供了一个漂亮而简短的输出(好的,添加了足够多的 cmets...)