Re: git apply -3 doesn't work
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- May 8, 2020, 13:47 UTC
- Message-ID
- <bf5fab9b-78f0-8c8c-dcf6-e6672014412f@gmail.com>
- In-Reply-To
- <d9d549eb-e888-c930-1aeb-38cd3aad1b3b@yandex.ru>
Hi Konstantin
On 08/05/2020 11:35, Konstantin Kharlamov wrote:
Show 27 quoted lines
> 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
Show 14 quoted lines
> > ## Expected > > Git apply successfully returns > > ## Actual > > It prints > > error: file1: does not exist in index > > # Versions > > git 2.26.2