背景
之前需求发布的时候,把代码发布到了预发布分支上,但是产品突然发现一个体验问题阻塞了发布,需要先revert掉,等改动完成后再继续发布。
现状
改动完成后,需要同步一下主分支上的代码,在本地解决冲突后再合入主分支。此时会发现Merged后将会把本地代码给删掉。
复盘定位
![](https://114.132.121.208/wp-content/uploads/2023/09/image.png)
如图所示,其实问题的根源就是:主分支上的revert没有被撤销,导致合入开发分支的时候本地代码都被revert掉了。
解决办法
![](https://114.132.121.208/wp-content/uploads/2023/09/image-1.png)
简而言之就是,撤销之前的主分支上的revert就可以让主分支上的代码合入到开发分支上又不会把本地代码删掉。相当于告诉git,主分支上这批代码不用被删掉了。具体步骤如下:
- 从最新的主分支上创建一个临时分支
- 切换到这个临时分支
- 在临时分支上revert(撤销)掉之前的revert提交
- 将临时分支合入到开发分支上,同步最新主分支代码
- 解决问题
说两个不成熟的小建议哈,一是开发2不建议以开发1为基础check,建议从主分支checkout;二是从主分支checkout的时候可以直接选择合入1的节点,从这里checkout出一个新的分支,和文章中的操作效果一样。
感谢阅读&回复,这里可能没说明白,我补充一下:
1. “开发二”并不是checkout出来的branch,而是新的commit。
2. 实际上不存在“分合1”这个branch,只会存在“临时1”这个branch,也就是你说的直接在“合入1”上checkout出的新的分支。