前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >git如何回滚错误合并的分支

git如何回滚错误合并的分支

作者头像
ConardLi
发布2019-09-08 14:42:06
8.3K0
发布2019-09-08 14:42:06
举报
文章被收录于专栏:code秘密花园code秘密花园

导读:

分类:技术干货

题目:git如何回滚错误合并的分支

合并到线上分支出现问题的修复方式。

场景

线上分支:master

你开发的分支:dev1

同时开发的分支:dev2

dev1分支开发的代码已经上线,并且已经merge到master

同时dev2分支也已上线,并且已经merge到master

这时发现dev1的巨大bug,线上版本要把这个分支的代码全部移除。

想要达到的效果

我们要撤销所有dev1的合并,并且保留dev2的代码。

同时本地dev1的分支不想删除这些代码,还有在这基础上开发。

master分支

如果使用reset,那么线上的几个提交记录都不会保留,达不到我们想要的效果。

这里使用git revert。

首先我们要撤销所有dev1的更改,找到dev1的两次commit id

此时master已经达到我们想要的效果:

开发分支

这时回到我们的dev1分支,修复bug,我还要保留以前提交的代码。

但是在上线前总要先merge master,但是master的两次revert是领先你的,一旦merge后你的代码就没有了。

下面是当前dev1的提交情况

所以我们要在merge master后,再使用revert撤销这次merge。

但是这时你发现,在merge完master之后你又在这个分支提交了新代码,这时revert就会报错:

这是因为撤销的是一次合并,git不知道要保存这两个分支中哪个的修改。

-m 1 表示保留当前分支的更改

-m 2 表示保留master更改

我们目的是为了保留dev1的代码,所以要保留当前代码,即使用 -m 1

执行完上面的代码,我们就会发现,代码又回来了,和master没有回滚前的代码一样。

修完bug,再把当前代码合并到master,然后你就会发现,dev2提交的代码被你的merge干掉了???

这是因为你的那次rever合并采用了你的分支代码,但是你的dev1分支并没有dev2的代码...

所以我们应该在master回滚前,回到dev1分支,先merge一次最新代码,再执行后面的操作。

总结

总结起来流程很简单。

1.保持你要开发的分支同步了master最新代码。

2.revert所有该分支的提交。

3.回到你的分支merge master。

4.revert merge master的那次提交。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 code秘密花园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景
  • 想要达到的效果
  • master分支
  • 开发分支
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档