论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
开源技术
›
开源技术
›
Git 如何撤回已 Push 的代码?
Git 如何撤回已 Push 的代码?
张春
论坛元老
|
2024-6-14 23:57:18
|
显示全部楼层
|
阅读模式
楼主
主题
1026
|
帖子
1026
|
积分
3078
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
在一样寻常的开发中,我们经常使用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
。
其他选项的含义
仅供参考
,因为我也没有一一尝试过。
Soft
:你之前写的不会改变,你之前暂存过的文件还在暂存。
Mixed
:你之前写的不会改变,你之前暂存过的文件不会暂存。
Hard
:文件恢复到所选提交状态,任何更改都会丢失。
你已经提交了,然后你又在当地更改了,如果你选hard,那么提交的内容和你提交后又当地修改未提交的内容都会丢失。
keep
:任何当地更改都将丢失,文件将恢复到所选提交的状态,但当地更改将保持不变。
你已经提交了,然后你又在当地更改了,如果你选keep,那么提交的内容会丢失,你提交后又当地修改未提交的内容不会丢失。
然后,之前错误提交的commit就在当地给干掉了。但是远程堆栈中的提交还是原来的样子,你要把目前状态同步到远程堆栈。
也就是需要把那几个commit删除的操作push已往。
打开push界面,虽然没有commit需要提交,需要点击
Force Push
,强推已往。
需要注意的是对于一些被掩护的分支,这个操作是不能举行的。需要自行查看设置,我这里因为不是master分支,以是没有掩护。
可以看到,远程堆栈中最新的commit只有我们的
help文档
。在其上的三个提交都没了。
注意:以上使用的是2023版IDEA,如果有出入的话可以考虑搜索使用git下令
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
张春
论坛元老
这个人很懒什么都没写!
楼主热帖
Eclipse连接SQLServer2008
【CSDN官方】开源又好用的国产SPL ...
Redis概述及基本数据结构
聊聊容灾演练-练什么|深度好文 ...
Velero系列文章(四):使用Velero进行 ...
彻底搞懂Docker容器与Kraft模式kafka集 ...
2022十三届蓝桥杯国赛题解
linux跟踪技术之ebpf
干货|APP自动化Android特殊控件Toast识 ...
4. 事务和锁
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
网络安全
快速回复
返回顶部
返回列表