本地新分支push到远端后合并master分支报合并冲突如何解决
合并冲突原因
- 合并冲突和master是否为最新版本没有直接关联,核心触发条件是两个待合并分支存在互斥的同位置改动
- 你基于旧版master创建new_branch并做了两次提交的周期内,远端master有其他用户提交了更新,且这些更新和你的new_branch改动触及了同一文件的相同/相邻代码行,或是你修改了某文件、其他提交删除了该文件
- 即便你后续拉取了最新的master分支,Git没有自动决策规则判断该保留哪一方的改动,就会触发合并冲突
冲突解决步骤
本地操作解决(更推荐)
- 切换到本地master分支,拉取最新代码,确保和远端一致:
git checkout master && git pull origin master - 切换回你的new_branch分支,执行变基或者合并操作,把最新master的改动合入当前分支:
git checkout new_branch
推荐用变基保持提交树整洁,命令为:
git rebase master;如果习惯用合并,命令为:git merge master
- 执行命令后Git会提示存在冲突的文件,打开这些冲突文件,冲突内容会用如下格式标记:
<<<<<<< HEAD // 当前分支的改动内容 ======= // master分支的改动内容 >>>>>>> master
- 和相关开发人员确认要保留的内容,删掉冲突标记(<<<<<<<、=======、>>>>>>>这三行),修改为最终需要的代码
- 所有冲突文件修改完成后,标记冲突已解决:
如果用的是变基操作,执行:
git add 冲突文件名,然后执行git rebase --continue,直到所有变基步骤完成
如果用的是合并操作,执行:git add 冲突文件名,然后执行git commit完成合并提交
- 把解决完冲突的new_branch分支推送到远端(变基后必须加-f参数,合并的话不需要):
git push origin new_branch -f - 此时再发起合并到master的请求,就不会再有冲突了
远端仓库页面直接解决
如果用的是GitHub/GitLab/Gitee这类平台,合并请求页面会有「解决冲突」的按钮,点击后在弹出的编辑器里按同样逻辑删掉冲突标记、保留最终代码,提交后即可自动完成冲突解决。
内容的提问来源于stack exchange,提问作者Arslan_senki
相关产品推荐
相关产品推荐

