news 2026/6/10 16:09:21

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

注意:以上使用的是2023版IDEA,如果有出入的话可以考虑搜索使用git命令

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

通讯魔法师profinet转ethernetip网关的神转换

通讯魔法师 profinet转ethernetip网关的神转换FANUC 机器人与 profinet通讯通常是把机器人配置为PN从站,由 PLC(如 Siemens、Rockwell 等)作为PN主站,通过 profinet 总线进行 I/O 数据交换。下面给你一个通用的实现要点和步骤&…

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

揭秘!光模块“零故障”的秘密:无尘车间里的匠心

在数据中心、5G基站等关键通信场景中,光模块作为光电信号转换的“核心枢纽”,其“零故障”运行直接关乎整个通信网络的稳定性。易天光通信(ETU-LINK)凭借多年深耕积累的工艺经验,以无尘车间为核心阵地,用极…

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

互联网大厂Java求职者面试技术栈全面分析

互联网大厂Java求职者面试技术栈全面分析 面试场景设定 在这个剧本中,我们将模拟一个互联网大厂的Java求职者面试场景,面试官是一位严肃的技术专家,而谢飞机是一位幽默风趣的求职者。他们之间将进行三轮提问,每轮包含3-5个问题&am…

作者头像 李华
网站建设 2026/6/10 14:46:48

Microsoft DP-700 考試戰報|Fabric 資料工程師一次通過心得

Microsoft DP-700 考試正式發佈:深入解析 Microsoft Fabric 數據工程解決方案認證之關鍵動態微軟(Microsoft)近期正式推出全新認證考試 DP-700:Implementing Data Engineering Solutions Using Microsoft Fabric,這標誌…

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

一文详解黑客是怎么利用钓鱼攻击,通过PDF文档暗投后门病毒的?网络安全零基础入门到精通实战教程!

免责声明由于传播、利用本号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!钓鱼攻…

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

2025顶级黑客练成计划,学会就入狱,手把手带你从零入门白帽黑客网络安全行业,学不会我退出网安圈

白帽子黑客是什么 说起黑客你一定耳熟,那么白帽黑客你知道吗?今天和知了姐一起来看看什么事白帽黑客及白帽黑客的作用。 白帽子黑客是指对网络技术防御的人。对电脑系统比如语言,TCP协议等等还有一些其他的有很高的造诣。他们精通攻击和防御&…

作者头像 李华