{"thread":{"id":"52487","subject":"Bug: Merge commit lost during interactive rebase","startedAt":"2019-12-18T22:04:55Z","lastAt":"2019-12-19T01:26:01Z","messageCount":2,"participants":["Valentina Finocchiaro","Thomas Braun"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"388480","messageId":"CA+Kr=1i09cw6o8J==psMiVEk8LaDr7nf2C-b85=TX4z=rV1oQg@mail.gmail.com","threadId":"52487","inReplyTo":null,"subject":"Bug: Merge commit lost during interactive rebase","fromName":"Valentina Finocchiaro","fromEmail":"valentinafinocchiaro@gmail.com","sentAt":"2019-12-18T22:04:14Z","receivedAt":"2019-12-18T22:04:55Z","isPatch":false,"sender":{"key":"valentinafinocchiaro@gmail.com","avatar":null},"body":"Hi,\n\nthis is to report a bug found during interactive rebase.\n\nBug description\n\nScenario:\n- New commit on top of a Merge Commit.\n- Dropping last commit during interactive rebase.\n- Merge Commit is lost in history\n\nSteps to reproduce this bug with “git version 2.18.1” on Centos8:\n\n[root@a86e2b632fc2 git-bug-rebase]# git --version\ngit version 2.18.1\n\n# Creating git repo\n\n[root@a86e2b632fc2 /]# mkdir git-bug-rebase\n[root@a86e2b632fc2 /]# cd git-bug-rebase/\n[root@a86e2b632fc2 git-bug-rebase]# git init\nInitialized empty Git repository in /git-bug-rebase/.git/\n\n# Adding stuff on master branch and first commit\n\n[root@a86e2b632fc2 git-bug-rebase]# touch file1\n[root@a86e2b632fc2 git-bug-rebase]# git add .\n[root@a86e2b632fc2 git-bug-rebase]# git commit -m \"first commit\"\n[master (root-commit) 39f2f9b] first commit\n 1 file changed, 0 insertions(+), 0 deletions(-)\n create mode 100644 file1\n[root@a86e2b632fc2 git-bug-rebase]# git log\ncommit 39f2f9b13feb0c1a4b6173cf179b45576fca9b96 (HEAD -> master)\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:49:21 2019 +0000\n\n    first commit\n[root@a86e2b632fc2 git-bug-rebase]# git branch\n* master\n\n# Creating another branch: branch2, checkout on it and commit changes\n\n[root@a86e2b632fc2 git-bug-rebase]# git branch branch2\n[root@a86e2b632fc2 git-bug-rebase]# git branch\n  branch2\n* master\n[root@a86e2b632fc2 git-bug-rebase]# git checkout branch2\nSwitched to branch 'branch2'\n[root@a86e2b632fc2 git-bug-rebase]# touch file-branch-2\n[root@a86e2b632fc2 git-bug-rebase]# git add .\n[root@a86e2b632fc2 git-bug-rebase]# git commit -m \"commit on branch2\"\n[branch2 786f836] commit on branch2\n 1 file changed, 0 insertions(+), 0 deletions(-)\n create mode 100644 file-branch-2\n\n# Checkout on master and commit something else\n\n[root@a86e2b632fc2 git-bug-rebase]# git checkout master\nSwitched to branch 'master'\n[root@a86e2b632fc2 git-bug-rebase]# touch file3\n[root@a86e2b632fc2 git-bug-rebase]# git add .\n[root@a86e2b632fc2 git-bug-rebase]# git commit -m \"commit on master\"\n[master e3a957d] commit on master\n 1 file changed, 0 insertions(+), 0 deletions(-)\n create mode 100644 file3\n[root@a86e2b632fc2 git-bug-rebase]# git log\ncommit e3a957d99401101b9e2805c2b59459123b2c1883 (HEAD -> master)\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:52:54 2019 +0000\n\n    commit on master\n\ncommit 39f2f9b13feb0c1a4b6173cf179b45576fca9b96\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:49:21 2019 +0000\n\n    first commit\n\n# Merge two branches:\n\n[root@a86e2b632fc2 git-bug-rebase]# git merge branch2\nMerge made by the 'recursive' strategy.\n file-branch-2 | 0\n 1 file changed, 0 insertions(+), 0 deletions(-)\n create mode 100644 file-branch-2\n\n[root@a86e2b632fc2 git-bug-rebase]# git log\ncommit 9329daf43321d1b797652abf87106134ca516929 (HEAD -> master)\nMerge: e3a957d 786f836\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:53:03 2019 +0000\n\n    Merge branch 'branch2'\n\ncommit e3a957d99401101b9e2805c2b59459123b2c1883\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:52:54 2019 +0000\n\n    commit on master\n\ncommit 786f836d941c101cb952aa008d10246cb0638e46 (branch2)\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:50:30 2019 +0000\n\n    commit on branch2\n\ncommit 39f2f9b13feb0c1a4b6173cf179b45576fca9b96\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:49:21 2019 +0000\n\n    first commit\n\n# Commit something after merge commit:\n\n[root@a86e2b632fc2 git-bug-rebase]# touch file-after-merge\n[root@a86e2b632fc2 git-bug-rebase]# git add .\n[root@a86e2b632fc2 git-bug-rebase]# git commit -m \"commit after merge\"\n[master 1f33710] commit after merge\n 1 file changed, 0 insertions(+), 0 deletions(-)\n create mode 100644 file-after-merge\n\n[root@a86e2b632fc2 git-bug-rebase]# git log\ncommit 1f33710d6f011bb123cd947f82a004812b71f804 (HEAD -> master)\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:53:43 2019 +0000\n\n    commit after merge\n\ncommit 9329daf43321d1b797652abf87106134ca516929\nMerge: e3a957d 786f836\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:53:03 2019 +0000\n\n    Merge branch 'branch2'\n\ncommit e3a957d99401101b9e2805c2b59459123b2c1883\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:52:54 2019 +0000\n\n    commit on master\n\ncommit 786f836d941c101cb952aa008d10246cb0638e46 (branch2)\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:50:30 2019 +0000\n\n    commit on branch2\n\ncommit 39f2f9b13feb0c1a4b6173cf179b45576fca9b96\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:49:21 2019 +0000\n\n    first commit\n\n# Delete last commit through interactive rebase (merge commit is not\nshown on list):\n\n[root@a86e2b632fc2 git-bug-rebase]# git rebase -i HEAD~3\nSuccessfully rebased and updated refs/heads/master.\n[root@a86e2b632fc2 git-bug-rebase]# git status\nOn branch master\nnothing to commit, working tree clean\n\n# Merge commit is lost:\n\n[root@a86e2b632fc2 git-bug-rebase]# git log\ncommit 82a34e8b224d8fa9434cc484ed153b519ffa32a5 (HEAD -> master)\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:50:30 2019 +0000\n\n    commit on branch2\n\ncommit e3a957d99401101b9e2805c2b59459123b2c1883\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:52:54 2019 +0000\n\n    commit on master\n\ncommit 39f2f9b13feb0c1a4b6173cf179b45576fca9b96\nAuthor: root <valentina.finocchiaro@gmail.com>\nDate:   Wed Dec 18 09:49:21 2019 +0000\n\n    first commit\n\n\nThanks and Best Regards,\nValentina\n"},{"id":"388492","messageId":"ad9494ae-f1f6-269f-b4d0-49e890dcd147@virtuell-zuhause.de","threadId":"52487","inReplyTo":"CA+Kr=1i09cw6o8J==psMiVEk8LaDr7nf2C-b85=TX4z=rV1oQg@mail.gmail.com","subject":"Re: Bug: Merge commit lost during interactive rebase","fromName":"Thomas Braun","fromEmail":"thomas.braun@virtuell-zuhause.de","sentAt":"2019-12-19T01:25:49Z","receivedAt":"2019-12-19T01:26:01Z","isPatch":false,"sender":{"key":"thomas.braun@virtuell-zuhause.de","avatar":"https://avatars.githubusercontent.com/u/1185677?v=4"},"body":"On 18.12.2019 23:04, Valentina Finocchiaro wrote:\n\nHi Valentina,\n\nsee the --preserve-merges parameter, in newer versions called\n--rebase-merges, for git rebase. This avoids the default behaviour of\ndropping the merge commit.\n\nThomas\n\n> this is to report a bug found during interactive rebase.\n> \n> Bug description\n> \n> Scenario:\n> - New commit on top of a Merge Commit.\n> - Dropping last commit during interactive rebase.\n> - Merge Commit is lost in history\n> \n> Steps to reproduce this bug with “git version 2.18.1” on Centos8:\n> \n> [root@a86e2b632fc2 git-bug-rebase]# git --version\n> git version 2.18.1\n> \n> # Creating git repo\n> \n> [root@a86e2b632fc2 /]# mkdir git-bug-rebase\n> [root@a86e2b632fc2 /]# cd git-bug-rebase/\n> [root@a86e2b632fc2 git-bug-rebase]# git init\n> Initialized empty Git repository in /git-bug-rebase/.git/\n> \n> # Adding stuff on master branch and first commit\n> \n> [root@a86e2b632fc2 git-bug-rebase]# touch file1\n> [root@a86e2b632fc2 git-bug-rebase]# git add .\n> [root@a86e2b632fc2 git-bug-rebase]# git commit -m \"first commit\"\n> [master (root-commit) 39f2f9b] first commit\n>  1 file changed, 0 insertions(+), 0 deletions(-)\n>  create mode 100644 file1\n> [root@a86e2b632fc2 git-bug-rebase]# git log\n> commit 39f2f9b13feb0c1a4b6173cf179b45576fca9b96 (HEAD -> master)\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:49:21 2019 +0000\n> \n>     first commit\n> [root@a86e2b632fc2 git-bug-rebase]# git branch\n> * master\n> \n> # Creating another branch: branch2, checkout on it and commit changes\n> \n> [root@a86e2b632fc2 git-bug-rebase]# git branch branch2\n> [root@a86e2b632fc2 git-bug-rebase]# git branch\n>   branch2\n> * master\n> [root@a86e2b632fc2 git-bug-rebase]# git checkout branch2\n> Switched to branch 'branch2'\n> [root@a86e2b632fc2 git-bug-rebase]# touch file-branch-2\n> [root@a86e2b632fc2 git-bug-rebase]# git add .\n> [root@a86e2b632fc2 git-bug-rebase]# git commit -m \"commit on branch2\"\n> [branch2 786f836] commit on branch2\n>  1 file changed, 0 insertions(+), 0 deletions(-)\n>  create mode 100644 file-branch-2\n> \n> # Checkout on master and commit something else\n> \n> [root@a86e2b632fc2 git-bug-rebase]# git checkout master\n> Switched to branch 'master'\n> [root@a86e2b632fc2 git-bug-rebase]# touch file3\n> [root@a86e2b632fc2 git-bug-rebase]# git add .\n> [root@a86e2b632fc2 git-bug-rebase]# git commit -m \"commit on master\"\n> [master e3a957d] commit on master\n>  1 file changed, 0 insertions(+), 0 deletions(-)\n>  create mode 100644 file3\n> [root@a86e2b632fc2 git-bug-rebase]# git log\n> commit e3a957d99401101b9e2805c2b59459123b2c1883 (HEAD -> master)\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:52:54 2019 +0000\n> \n>     commit on master\n> \n> commit 39f2f9b13feb0c1a4b6173cf179b45576fca9b96\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:49:21 2019 +0000\n> \n>     first commit\n> \n> # Merge two branches:\n> \n> [root@a86e2b632fc2 git-bug-rebase]# git merge branch2\n> Merge made by the 'recursive' strategy.\n>  file-branch-2 | 0\n>  1 file changed, 0 insertions(+), 0 deletions(-)\n>  create mode 100644 file-branch-2\n> \n> [root@a86e2b632fc2 git-bug-rebase]# git log\n> commit 9329daf43321d1b797652abf87106134ca516929 (HEAD -> master)\n> Merge: e3a957d 786f836\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:53:03 2019 +0000\n> \n>     Merge branch 'branch2'\n> \n> commit e3a957d99401101b9e2805c2b59459123b2c1883\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:52:54 2019 +0000\n> \n>     commit on master\n> \n> commit 786f836d941c101cb952aa008d10246cb0638e46 (branch2)\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:50:30 2019 +0000\n> \n>     commit on branch2\n> \n> commit 39f2f9b13feb0c1a4b6173cf179b45576fca9b96\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:49:21 2019 +0000\n> \n>     first commit\n> \n> # Commit something after merge commit:\n> \n> [root@a86e2b632fc2 git-bug-rebase]# touch file-after-merge\n> [root@a86e2b632fc2 git-bug-rebase]# git add .\n> [root@a86e2b632fc2 git-bug-rebase]# git commit -m \"commit after merge\"\n> [master 1f33710] commit after merge\n>  1 file changed, 0 insertions(+), 0 deletions(-)\n>  create mode 100644 file-after-merge\n> \n> [root@a86e2b632fc2 git-bug-rebase]# git log\n> commit 1f33710d6f011bb123cd947f82a004812b71f804 (HEAD -> master)\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:53:43 2019 +0000\n> \n>     commit after merge\n> \n> commit 9329daf43321d1b797652abf87106134ca516929\n> Merge: e3a957d 786f836\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:53:03 2019 +0000\n> \n>     Merge branch 'branch2'\n> \n> commit e3a957d99401101b9e2805c2b59459123b2c1883\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:52:54 2019 +0000\n> \n>     commit on master\n> \n> commit 786f836d941c101cb952aa008d10246cb0638e46 (branch2)\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:50:30 2019 +0000\n> \n>     commit on branch2\n> \n> commit 39f2f9b13feb0c1a4b6173cf179b45576fca9b96\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:49:21 2019 +0000\n> \n>     first commit\n> \n> # Delete last commit through interactive rebase (merge commit is not\n> shown on list):\n> \n> [root@a86e2b632fc2 git-bug-rebase]# git rebase -i HEAD~3\n> Successfully rebased and updated refs/heads/master.\n> [root@a86e2b632fc2 git-bug-rebase]# git status\n> On branch master\n> nothing to commit, working tree clean\n> \n> # Merge commit is lost:\n> \n> [root@a86e2b632fc2 git-bug-rebase]# git log\n> commit 82a34e8b224d8fa9434cc484ed153b519ffa32a5 (HEAD -> master)\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:50:30 2019 +0000\n> \n>     commit on branch2\n> \n> commit e3a957d99401101b9e2805c2b59459123b2c1883\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:52:54 2019 +0000\n> \n>     commit on master\n> \n> commit 39f2f9b13feb0c1a4b6173cf179b45576fca9b96\n> Author: root <valentina.finocchiaro@gmail.com>\n> Date:   Wed Dec 18 09:49:21 2019 +0000\n> \n>     first commit\n> \n> \n> Thanks and Best Regards,\n> Valentina\n> \n\n"}]}