BitBucket合并冲突疑难:本地无冲突但平台提示无法自动合并如何解决?
这种情况通常是因为你的本地仓库和BitBucket远程仓库的版本不同步导致的,我来一步步帮你搞定:
首先,先拉取远程仓库所有分支的最新代码,确保本地的远程跟踪分支是最新的:
git fetch origin这个命令不会修改你本地的工作分支,只是同步远程的分支信息。
切换到本地的master分支:
git checkout master把远程master的最新代码合并到本地master,保证本地master和BitBucket上的master完全一致:
git merge origin/master现在尝试合并远程的development分支到本地master,这时候应该会出现BitBucket提示的冲突了:
git merge origin/development接下来解决冲突:打开带有冲突标记的文件,找到
<<<<<<<、=======、>>>>>>>这些标记,对比两边的代码,保留你需要的内容,删除冲突标记。冲突解决后,把修改的文件标记为已解决:
git add <冲突的文件名>如果有多个冲突文件,直接用
git add .也可以(确保没有其他未提交的本地修改)。完成合并提交:
git commit -m "Merged development into master, resolved merge conflicts"最后把合并后的本地master推送到远程BitBucket:
git push origin master回到BitBucket的Pull Request页面刷新一下,这个PR应该会自动标记为已合并,或者你可以手动关闭它。
为什么之前没看到冲突?
大概率是你之前操作时,本地的master分支不是BitBucket上的最新版本,或者你合并的是本地的development分支(而不是远程的origin/development),导致本地的版本组合和BitBucket上的版本组合不一致,所以没触发冲突。通过git fetch同步远程分支后,再基于最新的远程master合并远程dev,就能复现并解决BitBucket提示的冲突了。
内容的提问来源于stack exchange,提问作者user10908204

