git - How can a revert commit also be a merge commit? -
recently @ work, lost code on project under version control using git (and private github repository).
i used git bisect
find culprit commit, , got surprised discovering looking revert commit, had 2 parents merge commits :
commit b5f97311eea2905baf8a96fddec22321d952f05c merge: 8cc7371 131d463 author: bob <bob@othercompany.com> date: fri may 22 19:42:25 2015 +0200 revert "isb-cpw-3627 - mise en place du calage des filtres ds1/ds2/ds3/ds4" reverts commit 8cc7371e7133b68db95ac8e9aeb730d7889a1166.
this issue has been resolved creating new branch ancestor commit, , applying patches on top of new branch.
so don't need fix that, want understand how can revert commit merge commit, happened, , how reproduce weird behavior.
i tried reproduce :
- create new branch @
8cc7371
- git revert
8cc7371
it creates revert commit single parent (8cc7371
) expected.
the culprit commit author uses atlassian sourcetree instead of native command line interface, tried using revert feature within sourcetree , got same result above (single parent).
after running git commands on b5f9731
, noticed git diff
, git show
not reporting same file set :
$ git diff b5f9731..8cc7371 --name-only => 2 files : application/sites/frontend/views/scripts/layout/foobar/pointsdevente/index.tpl public/media/design/frontend/css/main-dev.css $ git show --oneline --name-only b5f9731 => 1 file : public/media/design/frontend/css/main-dev.css
sourcetree , github showing 2 files.
you can find how graph looks here : graph.html, , git commands results there : misc.html.
could explain happened b5f9731
?
what comes mind:
git revert ... # new commit abcdef git merge ... # new commit fedcba git rebase -i head~2 pick abcdef - original revert commit squash fedcba - merge commit
message taken abcdef
.
this results in new b5f9731
. has 2 parents merge commit , message revert commit.
Comments
Post a Comment