How to revert a merge commit that's already pushed to remote branch?

后端 未结 17 1908
无人及你
无人及你 2020-11-22 07:04

git revert alone won\'t work. -m must be specified, and I\'m pretty confused about it.

Anyone experienced this before?<

17条回答
  •  温柔的废话
    2020-11-22 07:53

    The -m option specifies the parent number. This is because a merge commit has more than one parent, and Git does not know automatically which parent was the mainline, and which parent was the branch you want to un-merge.

    When you view a merge commit in the output of git log, you will see its parents listed on the line that begins with Merge:

    commit 8f937c683929b08379097828c8a04350b9b8e183
    Merge: 8989ee0 7c6b236
    Author: Ben James 
    Date:   Wed Aug 17 22:49:41 2011 +0100
    
    Merge branch 'gh-pages'
    
    Conflicts:
        README
    

    In this situation, git revert 8f937c6 -m 1 will get you the tree as it was in 8989ee0, and git revert -m 2 will reinstate the tree as it was in 7c6b236.

    To better understand the parent IDs, you can run:

    git log 8989ee0 
    

    and

    git log 7c6b236
    

提交回复
热议问题