当前位置: 代码网 > it编程>编程语言>其他编程 > Git报错:fatal:refusing to merge unrelated histories问题解决过程

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

2026年04月24日 其他编程 我要评论
最近我在同步一个深度学习课程代码库时,因为误删了本地的 .git 文件夹,遭遇了一个经典的 git 报错。本文将复盘这次错误的解决过程。1. 事故现场:误删 .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)机制以及远程分支管理的重要性。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com