Hi Konstantin
On 08/05/2020 11:35, Konstantin Kharlamov wrote:
As description says. To check that the 3-way merge should actually work
subsitute `git apply -3` with `git am -3` in the following steps. This
way it works.
# Steps to reproduce
$ git init
Initialized empty Git repository in /tmp/foo/.git/
$ echo hello > file1 && git add file1 && git commit -m "initial
commit"
[master (root-commit) 8334093] initial commit
1 file changed, 1 insertion(+)
create mode 100644 file1
$ git checkout -b mybranch
Switched to a new branch 'mybranch'
$ echo bye > file1 && git add file1 && git commit -m "change file1
text"
[mybranch 1807900] change file1 text
1 file changed, 1 insertion(+), 1 deletion(-)
$ git format-patch -1 --stdout > 1.patch
$ git checkout master
Switched to branch 'master'
$ mv file1 file2
$ git add -u && git add file2 && git commit -m "renamed file1 to
file2"
$ git apply -3 1.patch
error: file1: does not exist in index
Judging from the error message it never gets as far as trying the 3 way
merge because it first tries to apply the patch which modifies file1 but
file1 does not exist in the index. If it were to try a 3 way merge in
this case then on one side of the merge you've modified file1 and on the
other side it has been deleted so there would be a merge conflict. The
reason 'git am' succeeds is that the rename detection kicks in and so it
applies the patch to file2 rather than file1
Best Wishes
Phillip
## Expected
Git apply successfully returns
## Actual
It prints
error: file1: does not exist in index
# Versions
git 2.26.2