在本地提交合并请求时,报错"failed to push some refs to '....git'"
问题现象
在多人团队使用CodeArts Repo时,可能出现两个人同时修改同一行代码,这时在推送(push)代码到CodeArts Repo时会出现代码提交冲突并推送失败,并报错"failed to push some refs to '....git'",如下图所示。
原因分析
同一个文件同一个位置被同时修改,即本地仓与CodeArts Repo代码仓库存在差异,会产生合并冲突。
解决方案
当代码提交冲突产生时,您可以将远程代码仓库拉取(pull)到本地仓库的工作区,这时Git会将可以合并的修改内容进行合并,并将不能合并的文件内容进行提示,开发者只需要对提示的冲突内容进行修改即可再次推送到远程仓库(add → commit → push),这样操作便可以解决合并请求冲突。
在修改冲突文件时应该考虑清楚,必要时要与冲突方联系协商解决,避免覆盖他人代码。
git pull可以理解为 git fetch 的操作 + git merge的操作,其详细说明如下:
git fetch origin master #从远程主机的master分支拉取最新内容 git merge FETCH_HEAD #将拉取下来的最新内容合并到当前所在的分支中
在merge的时候,会将有冲突不能合并的内容做出提示。
如何在代码托管服务的控制台上解决分支合并冲突?
- 在线解决冲突(推荐在代码量较小或涉及冲突的代码量较小的情况下使用)
- 单击“在线解决冲突”,弹出如下图所示的代码冲突。
此页面中您可以直接选择“应用源分支”或“应用目标分支”来选择一方的修改作为最终修复后的内容。
- 当情况较复杂,简单的直接覆盖无法解决问题时,可单击进入“手动编辑”模式,如下图所示。
- 在上述页面中手动修改代码以解决冲突,并进行提交即可。
提交时注意需要填写提交信息。
上图中“<<<<” 、“>>>>”、“====”等所在行是冲突展现与分割符,在修改代码解决冲突时,要注意将其删除。
- 单击“在线解决冲突”,弹出如下图所示的代码冲突。