Git能否使用git blame -C命令找到的信息进行合并?

5
这个问题是在阅读这篇文章后引起的:Git真的可以追踪单个函数从一个文件移动到另一个文件吗?如果可以,那么如何做到?
以下是工作流程:
很久以前,我们将一个大文件folder/file.py拆分成许多文件:folder1/file.pyfolder2/file.py等等。
当我们查看folder2/file.py时,git blame -C正确地显示了该代码的历史记录,我们可以看到一些提交是在此拆分之前进行的。
问题在于,我们继续维护旧版本的代码,其中仍有folder/file.py,当我们将修复程序合并回“当前”版本时,git会不断重新创建文件夹folder,并且无法看到应将对folder/file.py进行的修复合并到folder1/file.pyfolder2/file.py中,具体取决于此代码块现在所在的位置。
我快速查看了git help merge,但没有找到任何相关内容。

这有帮助吗?http://stackoverflow.com/questions/11005813/git-putting-folders-in-folders-in-a-repository/11010454#11010454 - uday
1个回答

0

合并操作无法利用 git blame -C,但是git merge具有重命名检测功能。来自手册页面:

   rename-threshold=<n>
   Controls the similarity threshold used for rename detection. See also git-diff(1) -M.

Git的重命名阈值可能太高了,无法在合并期间检测到您的重命名。另外,检测也可能计算强度过高。尝试使用更低的重命名阈值进行测试合并,例如75:

git merge -X rename-threshold=75 <branch>

你可能需要尝试一段时间才能找到正确的数字,如果git因为计算量太大而退出,请尝试设置上面链接讨论中提到的 git config merge.renamelimit 0

如果上述方法失败,此答案也可能有所帮助。 我还没有尝试过 -X ignore-space-change 或链接的脚本,但这可能值得研究。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接