原文: Git Undo Merge – How to Revert the Last Merge Commit in Git

分支是 Git 不可或缺的一部分,因为它可以让你在不修改已经投入生产的代码的情况下工作。

当你在 main 以外的分支完成工作后,你需要将它与 main 合并,以便反映你刚刚集成的功能或错误修复。

但是,如果你在合并之后发现还有一件事情忘了做怎么办?或者,如果你在没有准备好时意外合并了怎么办?

你可以在 Git 中撤消几乎所有内容。因此,在本文中,我将向你展示如何在 Git 中撤销合并,以便你可以恢复到上次提交的内容。

如何在 Git 中撤消合并提交

你可以使用 Git 重置命令撤消合并。

首先,你需要检查提交哈希(或 id),以便你可以使用它返回上一个提交。

要检查哈希,请运行 git loggit refloggit reflog 是一个更好的选择,因为它更具可读性。

ss1-2

当你获得要返回的提交的哈希时,运行 git reset --hard commit-before-the-merge

ss-2-5

运行命令时,你应该会看到代码编辑器中删除了一些内容。

如果你不确定上一次提交的哈希值,你可以运行 git reset --hard HEAD~1 以返回到合并之前的提交:

ss-3-3

请注意,当你使用 --hard 标记撤消合并时,任何未提交的更改都将被还原。

在 Git 中撤消合并的更好方法

由于上面讨论的方法将恢复未提交的更改,Git 提供了一个更安全的标记 --merge

要使用 --merge 标记撤消合并,请运行 git reflog 以查看提交的哈希值,然后运行 git reset --merge previous-commit

ss4-1

你还可以通过运行 git reset --merge HEAD~1 将 HEAD 关键字与 --merge 标记一起使用:

ss5

注意:如果你在使用 --merge 标记时没有得到此命令的响应,请不要担心,它可以运行。

小结

在本文中,你学习了如何在 Git 中撤消合并,因此你可以撤消错误或不需要的合并,并更有效地使用 Git。

以下是使用 --hard--merge 标记撤消合并时的要点:--hard 标记删除未提交的更改,而 --merge 标记保留未提交的更改。

感谢你阅读本文!