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

Written by

in

文章目录
  • 事情的起因是我不小心删除了项目根目录下的 .git 文件夹。为了挽救,我直接在当前目录执行了 git init 重新初始化了一个仓库,并尝试拉取远程代码。 然而,当我执行 git pull upstream master 时,Git 抛出了一个致命错误: fatal: refusing to merge unrelated histories 这是什么意思? Git 认为我本地的代码历史和远程仓库的历史完全不是一回事。 确实,当我执行 git init 时,我创建了一个全新的、没有历史的仓库,而远程仓库已经有了很多提交记录。 在 Git 眼里,这是两个平行宇宙的项目。
  • 虽然可以通过添加 –allow-unrelated-histories 参数强制合并来解决这个问题,但这往往会导致大量的冲突,且逻辑上并不严谨。
  • 可以参考我的另一篇文章:Git同步上游代码 最彻底的修复方案是“重新克隆”: 备份:先把本地修改过的代码文件备份出来。 重克隆:重新执行 git clone,获取一份干净的、带有完整历史记录的项目。 恢复:将备份的代码覆盖回去。 这一步操作让我意识到,保持本地 Git 历史记录的完整性是多么重要。
  • 通过这次“误删 .git”的小插曲,我深刻理解了 Git 的提交历史(History)机制以及远程分支管理的重要性。 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: Ubuntu22.04系统:fatal: 无法连接到 github.com 解决Git fatal: refusing to merge unrelated histories报错问题
  • 目录
    • 1. 事故现场:误删 .git 引发的问题
    • 2. 解决方案与反思
    • 3.如何正确同步 Fork 的代码?
    • 4.总结

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

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

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

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

    fatal: refusing to merge unrelated histories

    这是什么意思?

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

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

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

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

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

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

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

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

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

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

    您可能感兴趣的文章:

    • Ubuntu22.04系统:fatal: 无法连接到 github.com
    • 解决Git fatal: refusing to merge unrelated histories报错问题

    站内搜索