如何解决GitLab中merge request合并到master分支时出现的冲突问题
关于GitLab MR冲突解决的疑问解答
为什么冲突解决的commit message显示合并master到156?
这不是操作错误,是GitLab的标准逻辑:合并冲突需要先将目标分支(你要合入的master)的最新改动合入源分支(你提交MR的156分支),在源分支上完成冲突解决后,才能将源分支的完整改动合入目标分支。Git不允许直接在目标分支上处理冲突,所以这个commit message的内容是正常的,和你最终要把156合入master的需求不冲突。
冲突解决时的mine/ours/theirs分别对应哪个分支?
在当前的MR场景下:
- ours/mine 对应源分支(156分支)的改动
- theirs 对应目标分支(master分支)的改动
为什么在线解决冲突后还是提示有冲突,且没有在线解决按钮?
通常是因为你在线解决冲突的过程中,master分支有了新的提交,你刚解决完旧的冲突,新提交又和156分支的内容产生了新冲突,这种场景下GitLab会关闭在线解决入口,只能本地处理。
是否必须本地处理?怎么操作?
如果master分支没有新提交,在线解决完冲突后直接点击合并按钮即可完成全在线操作,不需要本地处理。如果已经提示只能本地处理,按以下步骤操作即可:
- 切换到本地156分支并拉取最新代码:
git checkout 156 && git pull origin 156 - 更新本地master分支到最新版本:
git fetch origin && git checkout master && git pull origin master - 切换回156分支,合并master分支的改动:
git checkout 156 && git merge master - 打开存在冲突的文件,删除
<<<<<<<、=======、>>>>>>>这类冲突标记,保留需要的内容后保存 - 提交冲突解决的改动:
git add . && git commit - 将本地改动推送到远程156分支:
git push origin 156
推送完成后回到GitLab MR页面,冲突提示会自动消失,直接点击合并按钮即可完成合入。
内容的提问来源于stack exchange,提问作者lowcrawler
相关产品推荐
相关产品推荐

