如何取消合并到主分支

时间:2016-07-04 17:59:39

标签: git github merge bitbucket

我遇到这种情况,我意外地将一个分支合并到master

现在,我希望master分支回到之前的状态。我使用了git reset --hard HEAD^但是当我想要推送时我得到了这个错误:

  

更新被拒绝,因为您当前分支的提示已落后   它的远程对手

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

据我了解,您目前正在处理主分支,只是想将其重置为与其远程对应物完全相同(即丢弃您的更改)。最简单的方法是:

$ git fetch
$ git reset --hard origin/master

如果你已经推动了你所做的合并,你将不得不做一个强制推动。 但要小心,因为这会消除其他人在此期间可能会掌握的任何变化。

$ git reset --hard <hash of commit that is the earlier version of master to which you want to revert, as shown in the merge commit that you made>
$ git push -f

答案 1 :(得分:1)

您有几种选择:

  1. 删除本地分支并再次检出:

    # checkout temp branch
    git checkout - b tempBranch
    
    # delete the current branch
    git branch -D master
    
    # checkout the old branch
    git fetch --all --prune
    git checkout master
    
  2. 使用git reflog

  3. git reflog

    您也可以随时使用reflog git reflog将显示更新HEAD的任何更改,并且检出所需的reflog条目会将HEAD设置回此提交。

    每次修改HEAD时,reflog

    都会有新条目
    git reflog
    git checkout HEAD@{...}
    

    这会让你回到你想要的提交

    enter image description here

    这将使您处于一个独立的头部,您将必须检查新的分支并按照步骤1中所述执行上一步。