Git变基时为何插入合并冲突解决项却无内容可修改?
问题成因与解决方法
成因
你猜的没错,大概率是之前的提交中意外混入了未解决的合并冲突标记。比如之前某次合并/变基操作时,没彻底清理<<<<<<<、=======、>>>>>>>这些冲突标记就直接执行了git add和git commit,导致这些标记被永久存在代码历史里。这次rebase时,当前分支和上游分支的代码对比,这些残留的标记就触发了冲突,而且因为是“代码本身包含冲突标记”这种特殊情况,Git的可视化工具没法识别出常规的“双方更改”,所以没给出use incoming changes这类选项。
少数情况是上游分支和你的分支恰好都在同一位置写了类似冲突标记的字符,但这种概率极低,优先考虑第一种情况。
解决步骤
- 手动清理冲突标记:直接删除代码里的
<<<<<<< HEAD、=======、>>>>>>> [对应分支名/提交哈希]这些行,然后保留你需要的代码(如果想保留传入的更改,就留=======到>>>>>>>之间的内容,删掉HEAD侧的代码和所有标记)。 - 标记冲突已解决:执行
git add <冲突文件的路径>。 - 继续完成rebase:执行
git rebase --continue。
后续预防
- 以后处理冲突后,一定要仔细检查代码,确认所有冲突标记都被清理再提交。
- 可以用
git grep -n "<<<<<<<"搜索仓库里所有残留的冲突标记,提前清理历史提交里的问题(如果需要的话,可以用git rebase -i修改历史提交)。
内容的提问来源于stack exchange,提问作者pythonNovice
相关产品推荐
相关产品推荐

