Gitlab新建Merge Request时显示所有目标分支提交如何解决
GitLab MR显示多余基准分支提交问题解决方案
问题截图:
问题根因
你本地存储的develop/master分支版本和远端仓库的对应分支版本不一致,本地基准分支落后于远端版本,导致从本地基准分支拉取的新功能分支的分叉节点早于远端基准分支的最新节点,GitLab做MR比对时会把两端分叉点之间的所有提交都识别为你的分支改动。
修复方案
方案一:变基功能分支(推荐,无额外提交)
- 第一步:切换到本地基准分支,同步远端最新代码
# 若MR目标分支为develop则执行: git checkout develop git pull origin develop # 若MR目标分支为master则替换上面的develop为master即可
- 第二步:切换回功能分支执行变基
git checkout 你的功能分支名称 git rebase develop
- 第三步:处理变基冲突(无冲突可跳过)
逐个打开冲突文件解决冲突后,执行git add <冲突文件名>,再执行git rebase --continue,重复操作直到变基完成 - 第四步:强制推送变基后的分支到远端
git push -f origin 你的功能分支名称
操作完成后刷新GitLab MR页面,多余提交会自动消失,仅保留你自己的2次提交。
方案二:提交移植(适合不熟悉变基操作的场景)
- 第一步:查看你功能分支上的2次提交哈希值,执行
git log即可获取,例如得到两个哈希值为a1b2c3、d4e5f6 - 第二步:同步本地基准分支最新代码
git checkout develop git pull origin develop
- 第三步:基于最新基准分支新建功能分支
git checkout -b 新的功能分支名称
- 第四步:移植之前的两次提交到新分支
git cherry-pick a1b2c3 d4e5f6
- 第五步:解决可能的冲突后提交,推送新分支到远端,重新提交MR即可
说明
- 以上操作只会修改你个人的功能分支提交记录,不会改动远端基准分支的代码,不会造成代码库损坏
- 若你的功能分支有其他人共同开发,不要执行强制推送操作,优先选择方案二处理
内容的提问来源于stack exchange,提问作者Korlahwarleh
相关产品推荐
相关产品推荐


