如何撤消主分支的合并? [复制]

Posted

技术标签:

【中文标题】如何撤消主分支的合并? [复制]【英文标题】:How to undo merge of master branch? [duplicate] 【发布时间】:2016-04-10 20:12:47 【问题描述】:

我是新的 Github,所以请原谅一个看似显而易见的问题。我有一个 Experimentation 分支,它比 master 分支早 24 次提交。

按照本教程,我将master 分支与Experimentation 分支合并,如下所示:

git checkout master
git merge Experimentation

(没有合并冲突。)

但后来我意识到合并两个分支不会保留Experimentation 分支的提交历史记录,而我真正想要的是做一个变基(为了保留Experimentation 分支的提交历史记录)。

所以我的问题是:如何撤消master 分支的合并?

我已经试过了:

$ git branch
      Experimentation
    * master
      pod-attempt

$ git merge --abort
      fatal: There is no merge to abort (MERGE_HEAD missing).

“致命”消息让我感到困惑 b/c 我以为我确实合并了 master 分支。

【问题讨论】:

git merge abort 仅在合并期间有效,而不是之后。例如,当您有冲突要解决时,您正处于合并过程中,您可以中止它。 @alexscott 哦,好的,谢谢你的澄清! 【参考方案1】:

没有正在进行的merge 待处理,所以 git 应该会显示给你,

fatal: There is no merge to abort (MERGE_HEAD missing).

现在如果你想回到之前的状态(合并前的状态),试试

$ git branch
      Experimentation
    * master
      pod-attempt
$ git reset --hard HEAD~24

你已经完成了!

【讨论】:

我收到一个错误:fatal: ambiguous argument 'HEAD~c927e642': unknown revision or path not in the working tree。使用 '--' 将路径与修订分开,如下所示:'git [...] -- [...]' 您不能使用 HEAD~c927e642 作为参考。仅使用 c927e642 代替。举个例子, git reset --hard c927e642 24 这个数字到底是做什么的? @aexl 它是你想从头开始的提交数。 OP 想要继续 24 所以它在示例中提到,您可以尝试任何有效的 cl 计数。

以上是关于如何撤消主分支的合并? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

撤消 Git 分支提交和合并

如何撤消合并请求及其提交?

如何撤消 TFS 中的回滚?

如何撤消 git 上的丢弃更改?

如何撤消 git flow 功能完成?

如何将错误修复分支合并到主分支?