GitLab 在线合并解决冲突后反向合并的问题
本文最后更新于:2023-05-18 09:33:19
项目背景
开发项目的时候,使用gitLab合并功能分支feature到test分支上的时候,出现了Conflicts,在线解决冲突之后,点击解决合并,结果反向的把test的分支合并到了feature功能分支!!!
后果
导致test分支没有提测的代码合并到了feature分支,分支合并master的时候导致无需上线代码合到master分支,造成线上事故
解决方案
方法一
临时分支替代法:分支feature要合并到test分支,且出现了冲突,可以先从feature分支拉一个临时分支feature_temp,用临时分支feature_temp合并到test分支
1 |
|
然后再gitlab界面上面选择feature_temp分支去做合并操作。 点击Resove Conflicts
,选择要留下的版本,点击merge
合并
此时test分支合并到了feature_temp分支;同时test分支也就有了feature分支的代码!!!(解决冲突并且完成合并)
原理
例子:feature分支要合到test分支,使用Resove Conflicts
在线操作,解决冲突,点就merge
按钮;
实际先执行了Merge branch 'test' into 'feature'
,
然后执行了Merge branch 'conf2-tmp' into 'test'
来解决冲突,
(所以在test分支的提交记录会看到Merge branch 'conf2-tmp' into 'test'
和Merge branch 'test' into 'feature'
两天提交记录)
但是在实际操作中test分支直接merge到feature分支会造成feature分支被污染;
所以新建一个feature_tmp分支(来自于feature分支,带着feature分支代码),执行Resove Conflicts
操作来解决冲突合并代码
执行了Merge branch 'test' into 'feature_tmp'
, 把test分支合并到feature_tmp
再执行了Merge branch 'feature_tmp' into 'test'
来解决冲突,
此时feature_tmp携带了test分支的代码(受到污染,但是是备份分支则没有关系),test分支也携带了feature_tmp分支的代码,即使feature的代码,间接的完成了冲突解决和合并
feature分支也没必要在合到test分支,因为test分支已经携带了feature的代码
方法2
回滚补救法:设feature分支要合并到test分支,且出现了冲突,合并完成后,对feature分支做回滚操作
1 |
|
- 远程master分支的
git push -f origin
会推不上去,可能是master分支设置了分支保护,关闭强制push的保护,强行push git push -f origin
操作如果不是自己的featur分支,是测试分支test或者主分支master可能会冲掉别人的代码!!!!
正常解决冲突操作方法(local 解决)
用较为纯净的分支合并到有其他功能分支;如feature分支合并到test分支解决冲突,或者master分支合并到feature分支解决冲突
如是是feature分支和test分支冲突
1 |
|
如果是feature分支和master分支冲突
1 |
|
参考文章
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!