将文件移动到不同目录后合并分支
merging branches after moving files to a different directory
我尝试合并两个分支。在原始分支中,我有一些文件在第二个分支中移动到不同的位置。问题是,当我尝试从原始分支合并时,它不会将更改应用到新文件位置,即使它检测到我用 git move
移动了文件也是如此。
我创建了以下场景来更好地解释我的问题:
我有分支 a
,其中包含文件 a/1.txt
、a/2.txt
。在分支 b
中,我从目录 a
到 b
做了 git mv
到 1.txt
和 2.txt
。
next.. 在分支 a
中,我修改了 a/1.txt
,在分支 b
中,当我尝试将分支 a
合并到其中时,它尝试创建 a/1.txt
而不是将更改应用于新文件的位置(在目录 b
中)。
我该如何解决这个问题?
我提供了一个很可能显示您的问题的小示例:
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
我尝试合并两个分支。在原始分支中,我有一些文件在第二个分支中移动到不同的位置。问题是,当我尝试从原始分支合并时,它不会将更改应用到新文件位置,即使它检测到我用 git move
移动了文件也是如此。
我创建了以下场景来更好地解释我的问题:
我有分支 a
,其中包含文件 a/1.txt
、a/2.txt
。在分支 b
中,我从目录 a
到 b
做了 git mv
到 1.txt
和 2.txt
。
next.. 在分支 a
中,我修改了 a/1.txt
,在分支 b
中,当我尝试将分支 a
合并到其中时,它尝试创建 a/1.txt
而不是将更改应用于新文件的位置(在目录 b
中)。
我该如何解决这个问题?
我提供了一个很可能显示您的问题的小示例:
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