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
最后,按照常规流程提交并推送更改即可。
热门推荐
乳糖不耐受?没关系!快来看看这8种替代品!让你能继续享用最喜欢的食物
截止阀的种类和应用范围
四君子汤,益气健脾化湿,在此基础上,还演化出5种中成药!
全球黄金ETF投资动态分析
国家级!中山六院消化内科获批国家临床重点专科建设项目
太极拳的"气沉丹田",换两个字你就明白了
塔罗牌"吊人"正位在爱情中的深层含义
如何为苹果手机设置来电铃声?
EHJ重磅!2024年血脂异常领域研究TOP 10揭晓,降脂治疗或迎新突破
C语言防止溢出的全面指南
多巴胺色系有哪些颜色?
《变电站现场调试技术与应用》指导下的高压电气设备绝缘电阻测试
中国文房四宝产业学院在宣城揭牌成立
诉前保全裁定书执行指南
走路和跑步哪个更健康?一文读懂它们的差异与适用人群
我们与鬼神的距离
莫桑石与钻石 – 差异
冬季吃梨有什么好处
犯罪矫正中的心理健康问题与干预策略
重庆至武隆两日游全攻略:行程规划、必去景点与实用贴士
新一轮感染又来了,肺炎支原体感染进入高发季
二极管的伏安特性曲线实验指导
喝“有水垢的水”会得结石?铁锅炒菜能补铁?真相是……
超声波测厚仪在管道壁厚、腐蚀及阻塞检测中的应用
深入了解下关沱茶:普洱茶的独特魅力与品鉴指南
从荒诞故事会到综艺圣体,《火星情报局》的喜剧突围术
政府类债券的利率风险管理:来自商业银行的实践
云南日报关注:茶旅融合 村美民富
ST天龙资产法拍致年报业绩“变脸” 曾连续九年处于盈亏交替的困境
如何有效预防肺气肿?十大实用预防措施