Git报错:fatal:refusing to merge unrelated histories问题解决过程

 更新时间:2026年04月24日 09:13:27   作者:niuyougan  
本文作者分享了因误删.git文件夹而引发的Git报错解决过程,作者尝试重新初始化仓库并拉取代码,但遭到了Git的拒绝,作者认为正确的做法是重新克隆代码库,以保留完整的提交历史记录,本文提醒我们要重视Git的历史记录机制及其重要性

最近我在同步一个深度学习课程代码库时,因为误删了本地的 .git 文件夹,遭遇了一个经典的 Git 报错。

本文将复盘这次错误的解决过程。

1. 事故现场:误删 .git 引发的问题

事情的起因是我不小心删除了项目根目录下的 .git 文件夹。为了挽救,我直接在当前目录执行了 git init 重新初始化了一个仓库,并尝试拉取远程代码。

然而,当我执行 git pull upstream master 时,Git 抛出了一个致命错误:

fatal: refusing to merge unrelated histories

这是什么意思?

Git 认为我本地的代码历史和远程仓库的历史完全不是一回事

确实,当我执行 git init 时,我创建了一个全新的、没有历史的仓库,而远程仓库已经有了很多提交记录。

在 Git 眼里,这是两个平行宇宙的项目。

2. 解决方案与反思

虽然可以通过添加 --allow-unrelated-histories 参数强制合并来解决这个问题,但这往往会导致大量的冲突,且逻辑上并不严谨。

3.如何正确同步 Fork 的代码?

可以参考我的另一篇文章:Git同步上游代码

最彻底的修复方案是“重新克隆”:

  1. 备份:先把本地修改过的代码文件备份出来。
  2. 重克隆:重新执行 git clone,获取一份干净的、带有完整历史记录的项目。
  3. 恢复:将备份的代码覆盖回去。

这一步操作让我意识到,保持本地 Git 历史记录的完整性是多么重要。

4.总结

通过这次“误删 .git”的小插曲,我深刻理解了 Git 的提交历史(History)机制以及远程分支管理的重要性。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Websocket的用法及常见应用场景

    Websocket的用法及常见应用场景

    本文详细介绍了WebSocket的基本概念、特点、与HTTP的区别、常见应用场景、实例以及心跳机制,WebSocket是一种在单个TCP连接上进行全双工通信的协议,适用于实时数据传输场景,如实时聊天、实时协作、实时数据推送等
    2025-12-12
  • Windows 版本Git命令行的使用详解

    Windows 版本Git命令行的使用详解

    这篇文章主要介绍了Windows 版本Git命令行的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • git之远程代码回滚master问题

    git之远程代码回滚master问题

    这篇文章主要介绍了git之远程代码回滚master问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Git拉取代码的六种高效方式

    Git拉取代码的六种高效方式

    在 Git 中,拉取代码(即从远程仓库获取并合并最新代码)有多种方式,每种方式适用于不同的场景和需求,以下是几种常见的拉取代码的方式及其详细说明与示例,需要的朋友可以参考下
    2025-08-08
  • Matlab操作HDF5文件示例

    Matlab操作HDF5文件示例

    这篇文章主要为大家介绍了Matlab操作HDF5文件示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • postman扩展程序包安装与使用步骤

    postman扩展程序包安装与使用步骤

    这篇文章主要介绍了postman扩展程序包安装与使用步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 详解Metrics应用监控指标的使用说明

    详解Metrics应用监控指标的使用说明

    这篇文章主要为大家详细的介绍了Metrics应用监控指标的使用说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • 如何快速解决连接git/github失败的问题

    如何快速解决连接git/github失败的问题

    这篇文章主要介绍了如何快速解决连接git/github失败的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • VScode设置语言为中文以及解决中文注释乱码问题

    VScode设置语言为中文以及解决中文注释乱码问题

    VSCode默认是英文语言环境,习惯了用中文,下面这篇文章主要给大家介绍了关于VScode设置语言为中文以及解决中文注释乱码问题的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • fiddler抓包小技巧之自动保存抓包数据的实现方法分析【可根据需求过滤】

    fiddler抓包小技巧之自动保存抓包数据的实现方法分析【可根据需求过滤】

    这篇文章主要介绍了fiddler抓包小技巧之自动保存抓包数据的实现方法,较为详细的分析了fiddler自动保存抓包数据及根据需求过滤相关操作技巧,需要的朋友可以参考下
    2020-01-01

最新评论