巨坑的GitLab在线解决冲突(解决后做了反向合并代码的操作())

项目场景: 开发项目的时候,使用gitLab合并功能分支feature到dev上的时候,出现了Conflicts,在线解决冲突之后,点击解决合并,结果反向的把dev的分支合并到了feature功能分支,这波蜜汁操作当时我就懵了!!!
问题描述 gitLab合并解决冲突之后,反向将目标分支合并到了源分支。
巨坑的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. Find the merge conflicts message, and select Resolve conflicts. GitLab shows a list of files with merge conflicts.
简单翻译一下就是:
**1. 转到你的合并请求。
  1. 选择Overview,然后滚动到合并请求报告部分。
  2. 找到合并冲突消息,然后选择解决冲突。GitLab 显示具有合并冲突的文件列表。冲突突出显示:**
巨坑的GitLab在线解决冲突(解决后做了反向合并代码的操作())
文章图片

看到这好像觉得也没发现啥问题,接着继续往下看:
注意以下这句关键:
Resolving conflicts merges the target branch of the merge request into the source branch, using the version of the text you chose. If the source branch is feature and the target branch is main, these actions are similar to running git checkout feature; git merge main locally
翻译一下这句就会发现问题了:
解决冲突会使用您选择的文本版本将合并请求的目标分支合并到源分支中。
还举了个例子:
如果源分支是 feature,目标分支是main,这些动作类似于在 git checkout feature; git merge main本地运行。
这下就终于理解了,当我的分支是feature/xxxx的时候,解决完冲突,将我的目标分支dev合并到了我的源功能分支上面去了,oh shit 这该死的操作!!!!!
解决方案: 方法1:临时分支替代法:分支feature要合并到dev分支,且出现了冲突,可以先从feature分支拉一个临时分支feature_temp,用临时分支feature_temp合并到dev分支。
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解决冲突后的反向操作,还是要多看看官方文档,贴一下地址gitLab官方文档,希望大家多多支持和关注。

    推荐阅读