巨坑的GitLab在线解决冲突(解决后做了反向合并代码的操作?)
Anta_Cnl -项目场景:
开发项目的时候,使用gitLab合并功能分支feature到dev上的时候,出现了Conflicts,在线解决冲突之后,点击解决合并,结果反向的把dev的分支合并到了feature功能分支,这波蜜汁操作当时我就懵了!!!
问题描述gitLab合并解决冲突之后,反向将目标分支合并到了源分支。
首先了解一下gitlab官方提供的解决冲突的几个模式:
Resolve conflicts in interactive mode To resolve less-complex conflicts from the GitLab user interface:
1.Go to your merge request.
2.Select Overview, and scroll to the merge request reports section.
简单翻译一下就是:
**1. 转到你的合并请求。
看到这好像觉得也没发现啥问题,接着继续往下看:
注意以下这句关键:
翻译一下这句就会发现问题了:
解决冲突会使用您选择的文本版本将合并请求的目标分支合并到源分支中。
还举了个例子:
如果源分支是 feature,目标分支是main,这些动作类似于在 git checkout feature; git merge main本地运行。
这下就终于理解了,当我的分支是feature/xxxx的时候,解决完冲突,将我的目标分支dev合并到了我的源功能分支上面去了,oh shit 这该死的操作!!!!!
git checkout feature //先切换到feature 分支
git checkout -b feature_temp //拉出来新的分支
git push origin feature_temp //推送到远端
git branch --set-upstream-to=origin/feature_temp
然后再gitlab界面上面选择feature_temp分支去做合并操作。
方法2:回滚补救法:设feature分支要合并到dev分支,且出现了冲突,合并完成后,对feature分支做回滚操作。git log //找到上一个版本的commitID
git reset --hard HEAD/commitID //强制回退本地分支到上一个版本
git push origin HEAD --force 或者 git push -f origin feature //强制回退远程
这样就轻松解决了gitlab解决冲突后的反向操作,还是要多看看官方文档,贴一下地址gitLab官方文档,希望大家多多支持和关注。