【问题标题】:How to unmerge a Git merge?如何取消合并 Git 合并?
【发布时间】:2015-05-10 01:10:34
【问题描述】:

我不小心从 dev 那里做了一个git pull origin master,然后 master 并入了 dev。 可以解散吗?

我已经看到了不同的解决方案,我从 dev 和 master 都尝试了这个: git revert -m 1 <commit>(各一次) 但是我得到了:每次都是最新的

【问题讨论】:

    标签: git github merge git-pull


    【解决方案1】:

    如果你发现它当时的提交,你可以将你的分支重置为它在合并之前的状态。

    一种方法是使用git reflog,它会列出您拥有的所有 HEAD。 我发现git reflog --relative-date 非常有用,因为它显示了每次更改发生的时间。

    一旦你发现提交,只需执行git reset --hard <commit id>,你的分支就会和以前一样。

    如果你有SourceTree,如果git reflog 过于庞大,你可以在那里查找<commit id>

    【讨论】:

    • 因为它是一个奇怪的合并:“拉原主:由'递归'策略进行的合并”我有点迷路了。你会建议我从 master 做一个 git reset --hard 757501b (即使历史没有变化)。还是来自 dev 的 git reset --hard 14cbb9c ?
    • 这是你需要修复的开发,对吧?因此,找到在此错误合并之前在 dev 上进行的提交,并在 dev 上重置该提交。
    • git revert -m 1
    • 最糟糕的是,如果你推送了一个合并提交,那么不要应用这种方法,因为这会弄乱拉它的主分支。更喜欢还原。
    • 你是救命稻草 :)
    【解决方案2】:

    如果你还没有提交合并,那么使用:

    git merge --abort

    【讨论】:

    • 感谢它成功了,因为我还没有提交合并 :)
    • @Eightgate,他明确提到“如果你还没有提交合并,那么使用:git merge --abort”
    • 如果您还没有提交合并,这将起作用,干杯。
    【解决方案3】:

    git revert -m 允许取消合并仍然保留合并和取消操作的历史记录。可能有利于记录。

    【讨论】:

      【解决方案4】:

      如果git merge --continue 意外接受了合并,或者git pull <branch> 时自动提交了更改,那么我们可以通过执行恢复或撤消最近的合并

      git reset --merge HEAD~1
      

      此命令将我们的存储库恢复到最后一次提交。 HEAD 是指存储库的当前状态; HEAD~1 是存储库中的最后一次提交。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-19
        • 2021-10-05
        • 2017-05-27
        • 2016-12-31
        • 2020-06-30
        • 2016-01-17
        • 2014-10-27
        • 2016-02-04
        相关资源
        最近更新 更多