From: Phillip Wood Date: Fri, 08 May 2020 13:47:33 GMT Subject: Re: git apply -3 doesn't work Message-ID: In-Reply-To: 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