GitLab分支显示3 commit落后、2 commit超前无法合并求助
解决GitLab合并请求中“落后/超前”的问题
嘿,作为Git新手遇到这种情况太正常了,别慌!我来一步步给你捋清楚原因和解决办法:
为什么会出现“3 commit behind | 2 ahead”?
你创建分支的时候确实是基于当时master的HEAD,但问题出在你创建分支之后,又有人往master分支合并了新的提交——这就导致你的分支现在比最新的master少了3个提交,所以显示“3 commit behind”。
而“2 ahead”是因为你的分支里有2个master当前没有的提交,但你说内容和master一致,大概率是这两个提交是「重复提交」:比如你在本地做了和master后来新增提交完全一样的修改,然后自己提交了一次,虽然文件内容和master最终结果一样,但Git是看提交记录的,所以会认为你的分支有额外的提交。
解决步骤(分两种场景)
场景1:你的分支确实没有需要保留的新内容(和master完全一致)
这种情况我们可以把你的分支“对齐”到最新的master,去掉重复的提交:
- 先切回master分支,拉取最新的代码:
git checkout master git pull - 切换回你的分支:
git checkout 你的分支名 - 用rebase把你的分支变基到最新的master上,这一步会帮你去掉和master重复的提交记录:
git rebase master- 如果中途出现冲突,别紧张:打开冲突文件,把重复的内容删掉(因为你说内容和master一致,所以直接保留master的版本就行),然后执行:
重复这个过程直到rebase完成。git add . git rebase --continue
- 如果中途出现冲突,别紧张:打开冲突文件,把重复的内容删掉(因为你说内容和master一致,所以直接保留master的版本就行),然后执行:
- 因为rebase修改了提交历史,需要强制推送到远程仓库:
git push -f origin 你的分支名 - 这时候再回去看你的合并请求,应该就会显示分支和master完全一致了,要么可以直接合并,要么GitLab会提示你分支已经是最新的,你可以关闭这个MR。
场景2:你的分支有少量需要保留的修改(只是看起来和master一致)
如果你的分支其实有细微的修改,只是你误以为和master一样,那可以用合并的方式对齐:
- 同样先拉取最新的master:
git checkout master git pull - 切回你的分支,把master合并进来:
git checkout 你的分支名 git merge master - 如果没有冲突,直接提交合并结果然后推送:
git push - 如果有冲突,解决冲突后提交,再推送,之后你的MR就可以正常合并了。
小提醒
以后创建新分支之前,最好先拉取一下master的最新代码,这样能减少这种“落后”的情况哦!
内容的提问来源于stack exchange,提问作者Nielson
相关产品推荐
相关产品推荐

