news 2026/6/13 10:34:35

面试官:Git 如何撤回已 Push 的代码?问倒一大片。。。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试官:Git 如何撤回已 Push 的代码?问倒一大片。。。

面试官问: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文档。在其上的三个提交都没了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 18:29:21

PostgreSQL 实战:详解 UPSERT(INSERT ON CONFLICT)

文章目录 一、UPSERT 基础1.1 为什么需要UPSERT?- 传统方案的缺陷1.2 替代方案对比1.3 跨数据库兼容性1.4 UPSERT 使用建议 二、基本使用2.1 核心语法:INSERT ... ON CONFLICT2.2 突目标(Conflict Target)详解2.3 返回结果&#x…

作者头像 李华
网站建设 2026/6/10 15:40:19

深度解析:2026年高校AIGC检测政策变化及应对策略

深度解析:2026年高校AIGC检测政策变化及应对策略 TL;DR(太长不看):2026年高校AIGC检测全面收紧,三大变化:标准线从30%收紧到20%甚至15%、检测范围扩展到课程论文、处罚力度加大。应对策略:提前了…

作者头像 李华
网站建设 2026/5/1 7:51:00

嘎嘎降AI vs 比话降AI:价格、效果、体验全面横评

嘎嘎降AI vs 比话降AI:价格、效果、体验全面横评 TL;DR(太长不看):嘎嘎降AI和比话降AI是目前市面上最好用的两款降AI工具。嘎嘎降AI价格4.8元达标率99.26%,性价比最高;比话降AI价格8元使用Pallas引擎&#…

作者头像 李华
网站建设 2026/6/10 6:55:18

深度测评!9款AI论文写作软件评测:本科生毕业论文怎么选?

深度测评!9款AI论文写作软件评测:本科生毕业论文怎么选? 2026年AI论文写作工具测评:为何值得一看? 随着人工智能技术的不断发展,越来越多的本科生开始依赖AI论文写作工具来提升写作效率和论文质量。然而&…

作者头像 李华
网站建设 2026/6/10 20:39:01

ognl $ 符号在 struts2 中的作用与 # 的区别详解

在Java Web开发中,OGNL(对象图导航语言)是一种强大的表达式语言,尤其在Struts2框架中广泛应用。其中的“$”符号是一个关键操作符,主要用于动态取值和引用资源,能够简化开发并增强灵活性。理解它的具体用法…

作者头像 李华
网站建设 2026/6/10 18:39:35

2026降AI工具红黑榜:6款热门工具实测踩坑指南

2026降AI工具红黑榜:6款热门工具实测踩坑指南 TL;DR(太长不看):花两周时间测了十几款降AI工具,踩了不少坑。红榜推荐嘎嘎降AI(达标率99.26%)、比话降AI(不达标退款)、AIG…

作者头像 李华