将文件移动到其他目录后合并分支

时间:2017-02-02 10:15:16

标签: git git-merge git-mv

我尝试合并两个分支。在原始分支中,我有一些文件在第二个分支中移动到不同的位置。问题是,当我尝试从原始分支合并时,它不会将更改应用于新文件位置,即使检测到我使用git move移动了文件也很困难。

我创建了以下场景以更好地解释我的问题:

我的分支a包含文件a/1.txta/2.txt。在分支b中,我从目录git mv1.txt 2.txtab

分支a中的

next ..我在分支a/1.txt中修改了b,当我尝试将分支a合并到其中时,它会尝试创建a/1.txt而不是在新文件的位置(在目录b中)应用更改。

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

我提供了一个很可能显示问题的小例子:

mkdir test
cd test/
git init
echo -e '1\n2\n3' >foo
git add foo
git commit -m foo
git checkout -b bar
echo -e '1\n4\n5' >bar
rm foo
git add --all .
git commit -m bar
git checkout -
echo -e '6\n2\n3' >foo
git add foo
git commit -m foo2
git merge bar

现在您收到错误

# CONFLICT (modify/delete): foo deleted in bar and modified in HEAD. Version HEAD of foo left in tree.
# Automatic merge failed; fix conflicts and then commit the result.

如果您降低了使用-X find-renames=30%标识重命名所需的相似度(相似度为33%,因为三行之一相同),合并效果会更好:

git merge --abort
git merge bar -X find-renames=30%
git mergetool
git commit --no-edit