如何恢复 git 上的错误合并

Mar*_*lon 3 git github visual-studio-code

我的 git 存储库中有 3 个主要分支:devreleasemaster. 我对 进行更改dev,然后将其合并到release,并master在生产时合并到 。进行合并后,我将 3 个推送到 github。

我犯了一个错误,并以某种方式将 origin 合并release到我的本地dev. 你可以在下图中看到。我已正确地将 dev 合并到release中,但之后有一个从 origin 的合并releasedev.

在此输入图像描述

我想删除最后一次提交,merge branch 'release' of https://github....就好像它从未发生过一样。

我尝试使用 VSCode revert 命令:

在此输入图像描述

但我收到了这条消息:

Error: Unable to Revert Commit
Already up to date!
On branch dev
Your branch is up to date with 'origin/dev'.

nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)

Dan*_*ith 6

在 Git 中,该revert命令(由 VS Code 在幕后使用)不会删除有问题的提交。相反,它会创建一个新的提交来撤消更改。有关 的更多信息,请参阅此处revert

如果您指定要返回到合并的哪“一侧”,则可以revert与合并提交一起使用;例如

git revert -m 1
Run Code Online (Sandbox Code Playgroud)

然而,这仍然不是您想要的。你想做的事情由reset命令来处理。

请小心:在所有 Git 命令中,reset这是最容易丢失工作的方法之一!尽管仍有可能消除错误的影响,但相对困难reset

为了安全起见,您可以先创建 dev 分支的备份:

git switch dev
git branch dev-backup
Run Code Online (Sandbox Code Playgroud)

以下内容应该删除您的合并提交:

git reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)

如果一切顺利,您可以删除备份:

git branch -D dev-backup
Run Code Online (Sandbox Code Playgroud)