撤消git merge(尚未推送)

时间:2011-05-10 14:04:16

标签: git merge revert

我刚刚对我的一个功能分支(“feedback_tab”)进行了一些更改,然后检出“master”并将它们合并到那里。我实际上是想将它们合并到我的“开发”分支中。

现在,master通过17次提交领先于'origin / master'(它的远程) - 我没有推动合并(并且显然不希望)。如何将master恢复到意外合并之前的状态?我对git revertgit reset之间的这些东西感到困惑。

我查看了我的git日志,并没有将feedback_tab合并到master中的条目。我以为它会成为最佳入口?

有点困惑:/欢迎任何帮助!最大

4 个答案:

答案 0 :(得分:62)

撤消未推送的合并:

git reset --merge ORIG_HEAD

如果在合并期间发生冲突,撤消合并的最佳方法是:

git merge --abort

答案 1 :(得分:35)

git reset --hard HEAD~17带领你回到主人头前的17次提交。 git rebase -i HEAD~17可能也会删除额外的提交。

答案 2 :(得分:12)

取自git reset

Undo a merge or pull

    $ git pull                         <1>
    Auto-merging nitfol
    CONFLICT (content): Merge conflict in nitfol
    Automatic merge failed; fix conflicts and then commit the result.
    $ git reset --hard                 <2>
    $ git pull . topic/branch          <3>
    Updating from 41223... to 13134...
    Fast-forward
    $ git reset --hard ORIG_HEAD       <4>

答案 3 :(得分:4)

这个肯定会奏效!

git reset --hard HEAD~1 
git init

第一个将还原您最近所做的更改(合并) 第二个将初始化回购(因此将快进到最新的原产地)

我试过

git reset --merge

但它并没有成功。