Git撤回已Push的代码的做法大全实用指南

作者:袖梨 2026-09-08

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Git撤回已Push的代码的做法大全”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

目录
  • 1. 基础的手动操作(比较笨,不建议)
  • 2. git Revert Commit(建议)
  • 3. 增加新分支(建议撤回较多情况下采用)
  • 4. Reset Current Branch 到你想要恢复的commit记录(不太安全,慎用)

面试官问:Git 如何撤回已 Push 的代码?如果问你,你会吗?

落到代码里,在日常的开发里,我们经常采用Git来进行版本控制。有时候,我们可能会不小心将错误的代码 Push 到远程仓库,或者想要在本地回退到之前的某个版本重新开发。

在这个场景下,或者像我一样,写了一些感觉以后很有用的优化方案push到线上,又接到了一个新的需求。但是呢,项目比较重要,没有经过测试的方案不能轻易上线,为了承接需求只能先把push上去的优化方案先下掉。

现在我的分支是这样的,我想要在本地和远程仓库中都恢复到help文档提交 的部分。

1. 基础的手动操作(比较笨,不建议)

落到代码里,这样的操作很不建议,但是如果你不了解git,确实是我们最容易理解的方式。

理解这一步时,若你的错误代码不是很多,那么你其实能够借助与你想要恢复到的commit进行对比,然后手动删除错误代码,然后删除不同的代码。

按住 ctrl 选择想要对比的两个commit,随后选择 Compare Versions 就能借助对比删除掉你想要删除的代码。

实际处理时,这个方案在代码很轻松时时很有效的,甚至还能借助删除后最新commit和想要退回的commit在Compare 一下保障代码一致。

实际处理时,但是这个方法对于代码比较复杂的情况来说就不太好处理了,如果涉及到繁杂的设置文件,那更是让人头疼。只能借助反复的Compare Version来进行对比。

从实现思路看,这样的手动操作显然显得有些笨拙了,对此git有一套较为优雅的操作流程,同样能解决这个问题。

2. git Revert Commit(建议)

实际处理时,同样的,我第三次提交了错误代码,同时且已经push到远程分支。想要撤回这部分代码,只需右键点击错误提交记录

落到代码里,git自动产生一个Revert记录,随后我们会看到git自动将我第三次错误提交代码回退了,这个其实就相当于git帮我们手动回退了代码。

后续,只需我们将本次改动push到远程,即可完成一次这次回退操作,

理解这一步时,revert相当于自动帮我们进行版本回退操作,并且留下改动记录,很安全。这也是评论区各位大佬很建议的。

结合项目来看,但是revert还是存在一点不足,即一次仅能回退一次push。如果我们有几十次甚至上百次的记录,一次次的单击回退不仅费时费力而且还留下了每次的回退记录,我个人觉得revert在这种情况下又不太优雅。

3. 增加新分支(建议撤回较多情况下采用)

若真的需回退到上百次提交之前的版本,我的建议是直接新建个分支。

在想要回到的版本处的提交记录右键,点击new branch

实际处理时,新建分支的操作仅仅增加了一个分支,既能保留原来的版本,又能安全回退到想要回退的版本,同时不会产生太多的回退记录。

落到代码里,但是此操作仍然建议慎用,因为这个操作执行多了,分支管理就又成了一大难题。

4. Reset Current Branch 到你想要恢复的commit记录(不太安全,慎用)

这个时候会跳出四个选项供你选择,我这里是选择hard

其他选项的含义仅供参考,因为我也没有一一尝试过。

  1. Soft:你之前写的不会改变,你之前暂存过的文件还在暂存。
  2. Mixed:你之前写的不会改变,你之前暂存过的文件不会暂存。
  3. Hard:文件恢复到所选提交状态,任何更改都会丢失。从实现思路看,你已经提交了,随后你又在本地更改了,如果你选hard,那么提交的内容和你提交后又本地修改未提交的内容都会丢失。
  4. keep:任何本地更改都将丢失,文件将恢复到所选提交的状态,但本地更改将保持不变。实际处理时,你已经提交了,随后你又在本地更改了,如果你选keep,那么提交的内容会丢失,你提交后又本地修改未提交的内容不会丢失。

结合项目来看,随后,之前错误提交的commit就在本地给干掉了。但是远程仓库中的提交还是原来的样子,你要把目前状态同步到远程仓库。也就是需把那几个commit删除的操作push过去。

打开push界面,虽然没有commit需提交,需点击Force Push,强推过去。

在这个场景下,这里需留意对于一些被保护的分支,这个操作是不能进行的。需自行查看设置,我这里因为不是master分支,所以没有保护。

能够看到,远程仓库中最新的commit只有我们的help文档。在其上的三个提交都没了。

在这个场景下,以上就是Git撤回已Push的代码的方法大全的详细内容,更多关于Git撤回已Push代码的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
  • 关于Idea向GitHub push代码时一直重复提示输入用户名和密码的问题
  • 在Git中撤回最近的commit的多种方式小结
  • Git撤回合并提交的多种方法
  • 从实现思路看,idea中实用的git操作问题小结(撤回commit,撤回push、暂存区采用)
  • IDEA中git撤回上一次push的方法(指定回到某个版本)

相关文章

精彩推荐