50

我只是将一些更改提交到我的一个功能分支(“feedback_tab”)然后,签出“master”并将它们合并到那里。我实际上打算将它们合并到我的“开发”分支中。

现在,master 领先于 'origin/master'(它的远程) 17 次提交 - 我还没有推动合并(显然也不想这样做)。如何将 master 恢复到与意外合并之前相同的状态?我对这些git revert东西感到困惑git reset

我查看了我的 git 日志,没有将 feedback_tab 合并到 master 的条目。我以为它会是顶级条目?

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

4

4 回答 4

81

要撤消未推送的合并:

git reset --merge ORIG_HEAD

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

git merge --abort
于 2014-11-06T16:30:52.773 回答
37

git reset --hard HEAD~17将您带回 master 负责人之前的 17 次提交。git rebase -i HEAD~17可能也摆脱了额外的提交。

于 2011-05-10T14:06:58.343 回答
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>
于 2011-05-10T14:10:04.737 回答
4

这个肯定会奏效!

git reset --hard HEAD~1 
git init

第一个将恢复您最近所做的更改(合并),第二个会将 repo 初始化为最新的(因此将快进到最新的原点)

我试过了

git reset --merge

但它没有成功。

于 2017-02-26T22:06:58.173 回答