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
最后,按照常规流程提交并推送更改即可。
热门推荐
四川一男生高考710分,一屋子老师激动欢呼!网友:清华北大稳了
商铺投资财务全解析:收益与风险洞察
草莓:低糖水果的营养与食用指南
身份证号码的每一位分别代表什么含义
纵览德国历史,哪一届国力最强?
2025年奥斯卡金像奖提名名单公布:《艾米莉亚·佩雷斯》领跑
高配电脑FPS低下?揭秘八大原因及解决策略!
项目管理中的时间节点规划:从目标设定到持续改进
不把头手伸出车窗外安全
福建最出名的9道菜,特色福建菜谱合集,网友:闽帮菜,果然有一手
2025文科生必看!一文讲透院校怎么排名,专业怎么选择
与上级沟通时,应采用怎样的语气和措辞
连续5年获评中国最佳促进就业城市 为何是杭州?
《王者荣耀》41分推和衍生战术推荐
复旦课堂内的校外人:旁听可以翻越知识的围墙吗?
株洲十大景点:从神农谷到炎帝陵,玩转“火车拖来的城市”
一文带您了解医疗器械的清洗消毒与灭菌的流程
株洲十大景点全攻略:从神农谷到炎帝陵,玩转“火车拖来的城市”
《寒窑赋》作者考辨:一篇明清时期的托名作品
学历贬值,他们离开办公室走进技校学蓝领
真好看,12个荷花摄影技巧,让你的荷花照片不再单调
北京5个充满“烟火气”的大集!
李白与杜甫:起点不同的文学巨匠
常见快递包装材料优劣及包装过程要点
老子主张无为,孔子感叹无为的至高境界,朱熹为何反对无为之治?
轮胎如何进行正确安装?安装后如何进行检查?
最受欢迎的 Unity 年度游戏大作
嘉善美食全攻略:从传统名菜到特色小吃
企业工资薪金支出管理与优化策略
书籍背面都要写什么