git revert详情使用

1. 背景

描述一个git revert使用场景,加深一下对git revert的使用,场景如下:

  • Step 1:小辉在分支dev1上开发,提交了4次(分别为c1、c2、c3、c4),发布时需要把dev1分支合并到master分支上,生成了提交记录m5,并发布到线上。
  • Step 2: 小王在分支dev2上开发,提交了1次(c3),然后也把dev2分支合并到master分支上,生成了提交记录m6,并发布到线上。
  • Step 3: 不幸的是,小辉的dev1分支上存在bug,需要回滚dev1上的所有提交。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FjE81opV-1586452158369)(pic/git_revert_1.png)]

2. 解决思路

2.1 从简单场景说起

假设在上面的场景中没有小王dev2的提交,即把上面的场景简单化(如下图),流程如下:

  • Step 1:小辉在分支dev1上开发,提交了4次(分别为c1、c2、c3、c4),发布时需要把dev1分支合并到master分支上,合并的时候采用的是禁止快进式合并,即执行命令git merge --no-ff dev1生成了提交记录m5,并发布到线上。
  • Step 2: 不幸的是,小辉的dev1分支上存在bug,需要回滚dev1上的所有提交。

在这里插入图片描述

切到master分支上,使用git log --graph看出:

在这里插入图片描述

这里可以采用命令 git revert -m 1 77cb206f6b5db591a43eb55899b84f161656694f,即保留master主分支(1代表保留master主分支,revert掉另外一个分支的提交),revert完成后再看log会生成一个revert提交m6,如下图:
在这里插入图片描述
简化图如下:

在这里插入图片描述

上面进行了分支的成功回滚,但带来一个问题,若小辉在dev1分支上修复完bug后在再提交生成了c5,此时再去合并到master分支,之前c1到c4次提交会消失,而只有c5的提交,此时应该怎么办?此时切到master分支,再对m6提交进行反向revert一次就会找到c1~c4次提交,此时再进行dev1合并就可以了,命令如下:

git checkout master
git revert 11e7d194b73f6276ad07ee56502e98b6dbfe357e  反向revert
git merge --no-ff dev1   合并dev1
git push origin master

图如下:

在这里插入图片描述
在这里插入图片描述

2.2 回到上面复杂的场景

理解了简单场景,复杂的场景只不过细心点就可以解决了,再看文中开头提到的场景:

在这里插入图片描述

思路如下:

  • Step 1:revert掉m5提交,会生成m7提交,达到master分支去除dev1分支的所有修改。

在这里插入图片描述

  • Step 2:切到dev1分支上修改,进行bug修改,在dev1分支上生成c5。

在这里插入图片描述

  • Step 3:切到master分支上,对m7进行反向revert生成m8提交,再合并dev1分支,即可达到修复dev1分支上bug的问题。

在这里插入图片描述

上面的整体实战示例如下图(图中为了简便,只进行了dev分支c1和c2提交):

在这里插入图片描述

  • 13
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bboyzqh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值