如何在Git上撤销错误的合并

3
我在git仓库中有三个主要分支,分别是devreleasemaster。我将更改应用到dev分支,然后合并到release分支,在生产环境下再合并到master分支。完成这些合并后,我会将三个分支推送到github。
我犯了一个错误,不知何故将远程的release分支合并到了本地的dev分支。如下图所示,我已经正确地将dev分支合并到release分支,但之后又有一个来自远程release分支的合并操作进入了dev分支。 enter image description here 我想删除这个最后的提交记录merge branch 'release' of https://github....,使其好像从未发生过一样。
我尝试使用VSCode的还原命令: enter image description here 但我收到了以下消息:
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

这个回答解决了你的问题吗?如何将Git仓库恢复到之前的提交? - undefined
使用git reset --hard <之前的提交> - undefined
"Revert" 在 Git 中的意思是创建一个新的提交,其中包含与之前相反的更改。 - undefined
1个回答

5
在Git中,revert命令(在VS Code背后使用)不会删除相关提交。相反,它会创建一个新的提交来撤销更改。有关revert的更多信息,请参见这里
如果指定要返回到哪个“方面”,您可以通过revert使用合并提交例如:
git revert -m 1

然而,这仍然不是你要找的。你想做的事情可以使用reset命令来处理。

要小心:在所有的Git命令中,reset是最容易丢失你的工作的方式之一!相对来说,虽然还是有可能的,但撤销错误reset的影响比较困难。

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

git switch dev
git branch dev-backup

以下操作可删除您的合并提交:
git reset --hard HEAD^

如果一切顺利,您可以删除备份:
git branch -D dev-backup

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