ufk
ufk

Reputation: 32094

merging branches after moving files to a different directory

I have two branches that I try to merge. In the original branch I have some files that in the 2nd branch where moved to a different location. the problem is that when I try to merge from the original branch, it doesn't apply the changes to the new file location even tough it detected that I moved the files with git move.

I created the following scenario to better explain my problem:

I have branch a with files a/1.txt, a/2.txt. in branch b I did git mv to 1.txt and 2.txt from directory a to b.

next.. in branch a I modified a/1.txt, in branch b when I try merge branch a into it, it tries to create a/1.txt instead of applying the change on the new file's location (in directory b).

how do I resolve this issue ?

Upvotes: 0

Views: 649

Answers (1)

Vampire
Vampire

Reputation: 38619

I provided a small example that most probably shows your problem:

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

Now you get an error saying

# 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.

If you instead decrease the level of similarity that is necessary to identify a rename with -X find-renames=30% (similarity was 33%, as one of three lines was the same), the merge works better:

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

Upvotes: 1

Related Questions