如何解决Merge主分支代码导致本地代码被删除?

背景

之前需求发布的时候,把代码发布到了预发布分支上,但是产品突然发现一个体验问题阻塞了发布,需要先revert掉,等改动完成后再继续发布。

现状

改动完成后,需要同步一下主分支上的代码,在本地解决冲突后再合入主分支。此时会发现Merged后将会把本地代码给删掉。

复盘定位

如图所示,其实问题的根源就是:主分支上的revert没有被撤销,导致合入开发分支的时候本地代码都被revert掉了。

解决办法

简而言之就是,撤销之前的主分支上的revert就可以让主分支上的代码合入到开发分支上又不会把本地代码删掉。相当于告诉git,主分支上这批代码不用被删掉了。具体步骤如下:

  1. 从最新的主分支上创建一个临时分支
  2. 切换到这个临时分支
  3. 在临时分支上revert(撤销)掉之前的revert提交
  4. 将临时分支合入到开发分支上,同步最新主分支代码
  5. 解决问题

作者: 7gugu

I'm a phper!

《如何解决Merge主分支代码导致本地代码被删除?》有2个想法

  1. 说两个不成熟的小建议哈,一是开发2不建议以开发1为基础check,建议从主分支checkout;二是从主分支checkout的时候可以直接选择合入1的节点,从这里checkout出一个新的分支,和文章中的操作效果一样。

    1. 感谢阅读&回复,这里可能没说明白,我补充一下:
      1. “开发二”并不是checkout出来的branch,而是新的commit。
      2. 实际上不存在“分合1”这个branch,只会存在“临时1”这个branch,也就是你说的直接在“合入1”上checkout出的新的分支。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注