Git - 撤销将主分支合并到另一个分支的操作

3

我有一天在为工作中的GitHub项目做提交时犯了一个错误。我对git还不太熟悉(是一名本科生),需要撤销合并操作。我意外地将主分支(如下图所示)合并到名为“wav2sig-scal-RMS-vals”的特征分支上。 image 我看了几篇解决此类问题的指南,但是我无法弄清楚该怎么做。以下是git reflog返回的内容:

git reflog
9fb9307 HEAD@{0}: undo: checkout: moving from master to wav2sig-scale-RMS-vals
9c3d141 HEAD@{1}: undo: commit: Revert "Merge branch 'master' into wav2sig-scale-RMS-vals"
6933c35 HEAD@{2}: commit: Revert "Merge branch 'master' into wav2sig-scale-RMS-vals"
9c3d141 HEAD@{3}: checkout: moving from master to wav2sig-scale-RMS-vals
9fb9307 HEAD@{4}: clone: from https://github.com/UKY-Distributed-Audio-Lab/Array-Toolbox.git

有没有解决这个问题的想法?我知道应该很简单。谢谢。


你把这三个提交推送到远程仓库了吗,还是它们只存在于你的本地仓库中? - undefined
2个回答

3
合并操作会转化为一次提交记录。你只需要回退到合并之前的那个提交即可,可以使用提交记录的哈希值或者HEAD~作为回退的目标。具体如何回退请参考这里

唯一的问题是,我没有意识到这个问题,在合并之后又提交了两次,如图所示。有没有办法在将主分支与侧分支分离时保留我在侧分支上的提交? - undefined
没有“分离主分支”这一说法...合并,就是在一天结束时提交的。在提交(合并)之后,就无法再区分哪些来自主分支,哪些来自分支,所以我认为你无法实现你所要求的。你可以从头创建一个新的分支,在合并之前将其还原,使用git比较与你最初开始的分支,并手动选择要保留的更改。(如果你使用的是Intellij,这可以很容易地完成...其他类似的IDE也可能有类似的功能) - undefined

2
  1. git reflog(查找最后一个 git/commit 的 Head)
  2. git reset --merge 796bf9aee(要重置的最后一个 git/commit 的 Head)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接