为在文件之间移动函数的更改生成差异,并且还略有改变?

时间:2015-04-28 21:09:57

标签: git diff

在一次提交中,我将一个函数移动到一个新文件,并对其进行了一些更改。

Github的差异查看器只显示从旧文件中删除约30行,并且新文件中添加了30行 - 很难看出旧文件和新文件的实现存在哪些差异。

是否有任何工具可以帮助打破这种差异?我可以将每个文件的相关部分复制到一个新文件中,然后在这些文件上运行diff,并生成一个我认为的补丁文件...

1 个答案:

答案 0 :(得分:1)

命令行git diff程序具有检测重命名的启发式方法,但默认情况下不会启用它。通过-M[<n>]--find-renames[=<n>]选项启用它。例如:

git show --find-renames <commit-sha>

根据您的经验,Git不会跟踪重命名。它采用的启发式方法是比较已删除并添加的相似文件。默认的相似性索引为50%,但可以使用=<n>参数进行控制。要将阈值增加到90%(文件必须是90%相同才能被视为重命名):

git show --find-renames=90% <commit-sha>

如果你希望git 总是检测重命名,那就有一个配置旋钮:

git config --global diff.renames=true

有关详细信息,请参阅git-diff documentation