Files
testmd/Git创建远程仓库推送出现refusing to merge unrelated histories.md

3.1 KiB
Raw Blame History

date, updated, title
date updated title
2026-1-10 14:54:51 2026-1-10 14:54:51 Git创建远程仓库推送出现refusing to merge unrelated histories问题处理

背景

在本地创建了项目并使用git进行跟踪在远程仓库创建了项目并进行了一些初始化例如生成了README.md Linces等文件的时候关联远程仓库并推送的时候会出现下面的报错

* branch master -> FETCH_HEAD = [up to date] master -> origin/master fatal: refusing to merge unrelated histories

核心报错原因

该错误是 Git 的安全机制拦截:本地仓库和远程 origin/master 分支被判定为 两个完全独立、无血缘关系 的仓库无共同的初始提交Git 默认拒绝合并这类「无关历史」,避免仓库数据混乱。

你的场景补充:up to date 仅代表分支提交记录数量一致,不代表历史同源,核心矛盾是「历史无关」而非「版本不一致」。

方案 1【最优推荐】强制合并无关历史一行命令解决99% 场景适用)

这是 Git 官方提供的专属解决方案,直接添加参数允许合并无血缘关系的仓库,保留双方所有提交记录,是最便捷、最常用的方法:

核心命令(直接执行,一步到位)

# 方式1拉取远程master并强制合并无关历史推荐最常用
git pull origin master --allow-unrelated-histories

# 方式2若执行merge操作时报错用此命令
git merge origin/master --allow-unrelated-histories

执行后处理2 种情况)

  1.  无冲突自动合并:命令执行后直接提示 Merge made by the 'ort' strategy,合并完成,本地仓库与远程同源;
  2. ⚠️ 出现代码冲突Git 会自动进入合并冲突编辑界面,按提示解决冲突即可(下文附极简冲突解决步骤)。

方案 2【兜底方案】本地仓库重置完全同步远程无冲突干净利落

适合本地仓库无重要未提交代码的场景,直接丢弃本地所有历史,将远程 master 分支完整覆盖到本地,彻底解决「历史无关」问题,全程无冲突:

# 1. 暂存本地所有修改(防止文件丢失,可选)
git add .
git commit -m "temp: 暂存本地修改"

# 2. 重置本地master分支指向远程最新版本核心
git reset --hard origin/master

# 3. 拉取远程最新代码,完成同步
git pull origin master

优势:零冲突、操作简单,适合本地仓库刚初始化、无核心代码的场景; ⚠️ 注意:--hard 会覆盖本地所有未提交 / 已提交的修改,执行前务必确认本地无重要代码!


总结

场景 1保留本地代码→ 用方案 1

git pull origin master --allow-unrelated-histories

场景 2本地无重要代码→ 用方案 2

git reset --hard origin/master && git pull origin master

执行对应命令后即可彻底解决「refusing to merge unrelated histories」报错实现本地与远程分支正常合并 / 拉取!