在一次提交中,我将一个函数移动到一个新文件,并对其进行了一些更改。
Github的差异查看器只显示从旧文件中删除约30行,并且新文件中添加了30行 - 很难看出旧文件和新文件的实现存在哪些差异。
是否有任何工具可以帮助打破这种差异?我可以将每个文件的相关部分复制到一个新文件中,然后在这些文件上运行diff
,并生成一个我认为的补丁文件...
答案 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。