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

74 lines
3.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
date: 2026-1-10 14:54:51
updated: 2026-1-10 14:54:51
title: 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 官方提供的**专属解决方案**,直接添加参数允许合并无血缘关系的仓库,保留双方所有提交记录,是最便捷、最常用的方法:
### 核心命令(直接执行,一步到位)
```bash
# 方式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` 分支完整覆盖到本地,彻底解决「历史无关」问题,全程无冲突:
```bash
# 1. 暂存本地所有修改(防止文件丢失,可选)
git add .
git commit -m "temp: 暂存本地修改"
# 2. 重置本地master分支指向远程最新版本核心
git reset --hard origin/master
# 3. 拉取远程最新代码,完成同步
git pull origin master
```
> ✅ 优势:零冲突、操作简单,适合本地仓库刚初始化、无核心代码的场景;
> ⚠️ 注意:`--hard` 会**覆盖本地所有未提交 / 已提交的修改**,执行前务必确认本地无重要代码!
---
# 总结
## 场景 1保留本地代码→ 用方案 1
```bash
git pull origin master --allow-unrelated-histories
```
## 场景 2本地无重要代码→ 用方案 2
```bash
git reset --hard origin/master && git pull origin master
```
执行对应命令后即可彻底解决「refusing to merge unrelated histories」报错实现本地与远程分支正常合并 / 拉取!