我有树枝feature1
和master
.
然后在feature1
我将一个文件重命名dir/file.txt
为dir2/file2.txt
.
之后我修改了文件,master
一周后feature1
也修改了文件。
我在整个项目中更改了 40 个文件。
当我尝试合并时master
,feature1
我使用的是低重命名阈值。大多数文件都已正确自动合并。提供一些文件用于手动解决冲突。
但是一些具体的文件既不会在merge
响应中显示为自动合并,
也不会正确合并。在适当的情况下,我希望我可以解决以下两种结果之一:
1.它不会检测到重命名,只是将另一个添加dir/file.txt
到feature1
分支中。
2. 它会检测重命名并让我手动解决冲突。
当我查看它们时有很多变化
git difftool master:dir/file.txt feature1:dir2/file2.txt
因此,我假设 git 识别重命名并决定保留我的版本而不通知我发生了什么。我该如何解决它/调试它?
这是我使用的命令
git config merge.renameLimit 9999999999
git merge --no-ff -Xrename-threshold=20 -Xignore-space-change master
更新1
在使用feature1
分支时,我删除了dir/file.txt
.
也许 git 假设这个文件应该被删除,因此忽略它在master
.
重命名检测失败,尽管保留了文件的相似性(levenshtein 距离小于内容长度的 2%)
另一个讨论建议“手动合并”将文件从一个分支复制到另一个分支。
更新2
其他一些文件被正确解析
CONFLICT (rename/delete): images/ab.gif deleted in master and renamed in HEAD. Version HEAD of cdn/img/ab.gif left in tree.
被删除master
和合并到的文件被正确feature1
解析。feature1
合并时无法识别已删除(或移动)的文件。
建议?
更新3
目前我正试图以相反的方式合并。合并feature1
并master
查看正在添加和删除哪些文件。这样,我将列出 git 无法识别为重命名并诉诸手动合并的文件列表。