Git Revert实战:功能提交的撤销与恢复
创作时间:
作者:
@小白创作中心
Git Revert实战:功能提交的撤销与恢复
引用
CSDN
1.
https://blog.csdn.net/qq_21583139/article/details/128437785
在软件开发过程中,我们经常会遇到需要撤销某个提交(commit)或者恢复被撤销的代码的情况。本文将通过两个实际场景,详细介绍如何使用
git revert
命令来安全地处理这些需求。
一:背景与方案
场景一:从已发布的版本分支中移除某个功能
假设我们有以下的提交序列:
现在需要将commit_2
的功能移除,但又不能影响其他提交的顺序。在这种情况下,使用git reset
是不合适的,因为它会清除commit_2
之后的所有提交。正确的做法是使用git revert
。
以下是具体的操作步骤:
git checkout -b revert_commit origin/master #从远程分支上创建本地的revert分支
git revert commit_2 #注意这里commit_2是指定的提交id,注意这步可能会冲突,因为有可能其他人在你这个提交基础上做了工作,要解决冲突
git add . #这一步用来解决冲突后添加文件到暂存区,没有冲突不需要
git commit -m 'revert commmit_2' #设置revert的提交信息
git push origin revert_commit:revert_commit #上传本地的revert分支
git merge revert_commmit master #分支合并
场景二:恢复被撤销的功能
假设我们有以下的提交序列:
现在需要重新恢复commit_2
的功能。很多人可能会尝试使用rebase
,但这种方法是错误的,因为它会再次应用revert1
,导致commit_2
的代码无法恢复。
正确的做法有两种:
方法1:负负得正(推荐)
通过再次revert掉之前的revert操作来恢复代码:
git revert revert1 #注意,还是有可能冲突的,有冲突要解决然后add就不重复了
执行成功后,本地的提交日志如下:
方法2:新建分支重新提交(不推荐)
这种方法本质上是重写代码,适用于commit_2
代码量不大时。
二:工作中的实际操作(针对场景2)
以下是实际操作的示例:
git log #找到revert处
输出结果:
commit f71b258de85679d5cdad395f6d8ac675f9817a1a
Author: leel
Date: Wed Nov 9 17:39:13 2022 +0800
add version 1.0.0
commit 395b7f8fd8b29eefd25e41358f23a71f7ab93184 <------------------这里是上次revert的id
Author: liming
Date: Wed Nov 9 17:27:34 2022 +0800
Revert "update rules"
This reverts commit 215d734c866ed8adb88e8c33ed6fe624d349a9a8.
commit 23734eb14c7feb19716b6a9aa9fb7aa4c9d4b5f4
Merge: b866e32 246894a
Author: xiaohong
Date: Tue Nov 8 11:14:24 2022 +0800
extended api verification common
commit 246894a619ad61c58dce1a8140196eaabc7e82ca
Author: xiaohong
Date: Tue Nov 1 17:43:37 2022 +0800
extended api verification common
执行revert操作:
$ git revert 395b7f8fd8b29eefd25e41358f23a71f7ab93184
[cancel_revert_update_rules 4a2b079] Revert "Revert "update rules""
5 files changed, 78 insertions(+), 57 deletions(-)
检查提交日志:
$ git log
commit 4a2b0796190aa950ab8b9b75367ff80fbb3cd43d
Author: leel
Date: Thu Dec 22 12:22:30 2022 +0800
Revert "Revert "update rules"" <--------------------------更新了revert revert 即负负得正
This reverts commit 395b7f8fd8b29eefd25e41358f23a71f7ab93184.
commit b6abc418f808cfcddee25e163299195b9ebde440
Merge: b2dee9d bf1b916
Author: xiaohong
Date: Wed Dec 21 10:26:54 2022 +0800
remove side
最后,按照常规流程提交并推送更改即可。
热门推荐
正交实验设计速成攻略:总体流程及极差分析(附分析软件分享)
要是没了它,东北人都不会做饭了
固态硬盘与机械硬盘性能对比研究
临时牌照车辆如何进入停车场
车辆临时牌照使用规定是什么
69岁老人长期受腰椎疾病困扰,中西医协同治疗助其恢复健康
月薪一万,交不起空调电费
肋骨炎有哪些症状?
肋骨中间有个硬块怎么回事怎么办
盲区监测系统是什么? 怎么辅助驾驶?
审计项目需求如何表述
亚文化:定义、特征及其在组织中的影响
企业破产程序有哪些
春游攻略 || 看人间四月天,华山如画云如烟
全面解析激光雷达接口技术与应用,助力智能驾驶未来
探索平板的清晰度(了解平板清晰度的重要性及其对用户体验的影响)
动车组低烟无卤阻燃电缆:安全与高效的“神经脉络”
脑囊肿需要手术吗?医生从三个维度帮你判断
三国名将曹操之子曹冲:智慧与仁爱的传奇人生
7种常见梨的品种及特性:从欧洲梨到亚洲梨的全面指南
智能座舱仪表系统及设计
FPGA发展趋势及其对开发者提出的新挑战
治疗大脚骨的费用
哪些情况下教师请假会扣工资?
文笔高手写文章就像哼小曲,4个技巧让文字好看又好听
知识付费买的课可以退款吗
左边200,右边1500!两只眼睛度数不一样,咋整?
草莓“十问”:从病虫害到食用安全,专家为你解疑答惑
胃轻瘫是什么意思
营业执照办理需要准备哪些材料呢?