5 种方法来撤销 Git 中的错误

2025-06-05

5 种方法来撤销 Git 中的错误

如果你对开发者的工作流程并不陌生,那么你肯定知道,有时候 Git 会帮你搞定!好消息是,在大多数情况下,Git 能帮我们摆脱自己编写代码时遇到的棘手困境。

由于 Git 的去中心化特性,它没有一个适用于所有情况的“撤销”命令,但不同的开发阶段需要不同的解决方案。让我们来看看最常见的场景。

 

提示 #1

艰难的开始:放弃未暂存的更改

您决定对文件进行一些更改,但进行到一半时您心想:“不,我最好重新开始,以免走到尽头!”

$ git checkout -- <filename> 
Enter fullscreen mode Exit fullscreen mode

如果您的文件未暂存(您可以通过运行来检查git status)并且您确定要丢弃它们,则可以使用上述命令。

该文件的当前版本将被替换为上次暂存或提交的版本,并且您所做的更改将不会被保存。您还可以使用此命令放弃目录中所有文件的所有本地更改

$ git checkout -- <dirname> 
Enter fullscreen mode Exit fullscreen mode

 

提示 #2

犹豫不决的开发人员:从索引中取消暂存文件

午饭前,你对文件做了一些相当巧妙的修改。或者说,你以为是这样……现在,你不太确定这个文件是否适合你即将进行的提交,但你也不想删除它……

$ git reset <filename> 
Enter fullscreen mode Exit fullscreen mode

索引是一个暂存区,允许您选择要包含在提交中的更改集。如果您已经暂存了更改,git add但尚未准备好提交这些文件,则可以通过运行上述命令取消暂存它们。
您的更改将被取消暂存,但不会从工作树中删除 - 会一直保留在后台,直到您决定再次查看它们。
但是,如果您确实要永久删除所有更改,则可以运行以下命令:

$ git reset --hard <filename>
Enter fullscreen mode Exit fullscreen mode

 

提示#3

让我们退一步:撤消已提交的更改

您设法发现了错误的提交,但它深埋在您的修订历史中......现在怎么办?

$ git revert <commit>
Enter fullscreen mode Exit fullscreen mode

好消息是,现在惊慌失措还为时过早——它git revert能帮上忙。它用于通过创建一个新的、相反的提交来逆转先前提交的影响。它使用起来非常安全,因为它不会重写 Git 历史记录(它不会删除错误的提交,而是自动创建一个包含反向更改的新提交)。因此,它既可以在本地使用,也可以在共享存储库中使用。要查找提交 ID,您可以使用以下命令:

$ git log --oneline
Enter fullscreen mode Exit fullscreen mode

 

提示#4

挑选的艺术:将提交应用到不同的分支

哎呀……你提交到错误的分支了。现在你想在不合并整个分支的情况下,将它应用到正确的分支。

$ git cherry-pick <commit>
Enter fullscreen mode Exit fullscreen mode

Cherry-pick 允许您从一个分支中选择一个提交并将其应用到另一个分支。
为了执行此操作,请确保您位于要应用提交的分支上。然后运行上述命令。不要忘记从您错误应用提交的分支中移除提交。要移除提交,只需切换到该分支并移除提交,然后再将分支推送到远程。

$ git reset --hard HEAD{index}
Enter fullscreen mode Exit fullscreen mode


💡 想要分享代码,又不想在 Git 上推送和拉取?使用 GitLive,你可以直接从团队成员的本地工作副本中挑选他们未提交的更改。点击此处了解详情。


提示 #5

如果我可以回到过去:修改旧提交的提交消息

查看提交历史记录时,您注意到其中一个较旧的提交中有一个拼写错误......

$ git rebase -i <sha>
Enter fullscreen mode Exit fullscreen mode

使用此命令,您可以通过命令行菜单来编辑、压缩和删除提交。根据经验,您永远不应该修改远程 Git 历史记录,但您可以安全地在本地使用它。

为了热身,我们先在本地示例仓库上尝试使用交互式 rebase。你可以运行以下命令获取提交列表:

$ git log --oneline
Enter fullscreen mode Exit fullscreen mode

交互式 rebase-1.png

要修复第五个提交消息中的拼写错误,请运行$ git rebase -i <sha>并替换sha为最后一个正确的提交(在我们的例子中是1ca3db2

交互式 rebase-2.png

输入此命令后,您环境中的默认编辑器将会打开。按照说明执行您选择的操作。要编辑提交消息,请将单词替换pickr,保存并关闭编辑器窗口以继续进行变基。暂时不要更改消息!编辑器将再次打开,提示您编辑消息。现在您可以关闭编辑器并返回终端。
运行后,git log --oneline您将看到拼写错误已修复。小菜一碟!

交互式 rebase-3.png

 

感谢阅读!希望这些技巧能帮你避免 Git 的小失误。如果你想了解更多 Git 技巧,请查看我们 Git 系列的上一篇文章:5 大 Git 技巧和窍门以及5 个提升工作流程的 Git 技巧。祝你 Git 愉快!

文章来源:https://dev.to/gitlive/5-ways-to-undo-mistakes-in-git-37if
PREV
VS Code 中所有分支的早期合并冲突检测
NEXT
5 个 Git 技巧助您提升工作流程