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

Git 将文件移动到其他目录后合并分支,git,git-merge,git-mv,Git,Git Merge,Git Mv,我尝试合并两个分支。在最初的分支中,我有一些文件,它们在第二个分支中移动到了不同的位置。问题是,当我尝试从原始分支合并时,它不会将更改应用到新文件位置,即使它检测到我使用git move移动了文件 为了更好地解释我的问题,我创建了以下场景: 我有一个分支a,其中包含文件a/1.txt,a/2.txt。在分支b中,我执行了gitmv到1.txt和2.txt从目录a到b 接下来。。在分支a中,我修改了a/1.txt,在分支b中,当我尝试将分支a合并到其中时,它尝试创建a/1.txt,而不是将更改应用

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

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

我有一个分支
a
,其中包含文件
a/1.txt
a/2.txt
。在分支
b
中,我执行了
gitmv
1.txt
2.txt
从目录
a
b

接下来。。在分支
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