Git报refusing to merge unrelated histories错误该如何处理?
操作指南
前置备份(防止代码丢失)
首先给你当前的本地master代码打标签,永久标记为旧版本,后续任何操作都不会丢失这部分内容:
git tag v1.0-local-legacy HEAD
步骤1:确认远程分支最新状态
确保本地缓存的远程分支信息是最新的:
git fetch origin
步骤2:合并为线性提交(无分叉)
要把两个无共同祖先的分支整合为一条提交线,使用变基操作将本地所有提交迁移到远程master的最新节点之后,不会产生分叉的合并节点:
git rebase --allow-unrelated-histories origin/master
执行过程中如果出现文件冲突,按需修改冲突文件后执行
git add <冲突文件名>,再运行git rebase --continue即可,直到变基流程走完。
变基完成后,你的本地master就和origin/master完成了关联,所有提交都在同一条直线上。
步骤3:对比新旧代码差异
用之前打的旧版本标签就可以直接和远程代码对比差异:
- 查看全量文件差异:
git diff v1.0-local-legacy origin/master
- 查看指定文件差异:
git diff v1.0-local-legacy origin/master -- <目标文件路径>
可选:同步到远程仓库
如果你需要把整合后的线性提交推送到远程仓库,执行:
git push origin master
内容的提问来源于stack exchange,提问作者Louis
相关产品推荐
相关产品推荐

