Git 如何取消合并到主分支

Git 如何取消合并到主分支,git,github,merge,bitbucket,Git,Github,Merge,Bitbucket,我遇到的情况是,我意外地将一个分支合并到master 现在,我希望master分支返回到它以前的状态。我使用了git reset--hard HEAD ^但是当我想推的时候,我得到了这个错误: 更新被拒绝,因为当前分支的尖端已过期 其遥远的对应物 有什么办法可以解决这个问题吗?您有几种选择: 删除本地分支并再次签出: # checkout temp branch git checkout - b tempBranch # delete the current branch git branch

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

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

更新被拒绝,因为当前分支的尖端已过期 其遥远的对应物


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

您有几种选择:

  • 删除本地分支并再次签出:

    # 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
    
  • 使用git reflog

  • 您也可以始终使用
    reflog

    git reflog
    将显示更新
    HEAD
    的任何更改,并且签出所需的reflog条目将
    HEAD
    设置回此提交

    每次修改头部时,
    reflog

    git reflog
    git checkout HEAD@{...}
    
    这将使你回到你想要的承诺

    这将使您处于一个分离的头部,您必须签出新的分支,并按照步骤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
    
  • 使用git reflog

  • 您也可以始终使用
    reflog

    git reflog
    将显示更新
    HEAD
    的任何更改,并且签出所需的reflog条目将
    HEAD
    设置回此提交

    每次修改头部时,
    reflog

    git reflog
    git checkout HEAD@{...}
    
    这将使你回到你想要的承诺

    这将使您处于一个分离的头部,您必须签出新的分支,并按照步骤1中所述的上一步进行操作



    据我所知,您当前正在处理主分支,只想将其重置为与远程分支完全相同的状态(即放弃更改)。最简单的方法是:

    $ git fetch
    $ git reset --hard origin/master
    
    如果您已经推送了所做的合并,那么您必须执行强制推送但是,要小心,因为这将消除其他人在此期间可能对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
    
    $git重置--硬
    $git推送-f
    
    据我所知,您当前正在处理主分支,只需将其重置为与远程分支完全相同(即放弃更改)。最简单的方法是:

    $ git fetch
    $ git reset --hard origin/master
    
    如果您已经推送了所做的合并,那么您必须执行强制推送但是,要小心,因为这将消除其他人在此期间可能对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
    
    $git重置--硬
    $git推送-f
    
    没有,我正在处理另一个分支,我只是错误地将它合并到主分支中。我想取消。你能提供更多关于你情况的信息吗?我不确定我是否清楚。不,我正在另一个分支上工作,我只是错误地将它合并到主分支中。我想取消。你能提供更多关于你情况的信息吗?我不确定这对我来说是否清楚。我无法在合并之前找到提交;我正在寻找使用
    git reflog
    @Zakaria
    git log--oneline--graph master
    gitk master
    也可以帮助在master的历史记录中找到合并提交;我正在寻找使用
    git reflog
    @Zakaria
    git log--oneline--graph master
    gitk master
    也可以帮助在master的历史记录中找到合并提交。