我有两个分支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无法识别重命名的文件,然后进行手动合并。