使用 Git 一段时间后,你会注意到有很多难以修复的错误。 "fatal: refusing to merge unrelated histories"。与许多其他错误不同,此问题有一个解决方案,你可以在遇到它时重复使用。
先说解决方法:
git pull origin master --allow-unrelated-histories

# 但为什么会发生错误呢?

Git 提示 "fatal: refusing to merge unrelated histories" 是当两个不相关的项目合并到一个分支中时会发生错误。出现此错误是因为每个项目都有自己的提交和标签历史。这两种历史将互不相容。

出现此错误的主要情况有两种。

当你创建一个新的存储库、进行一些提交并尝试从另一个远程存储库中提取时,可能会发生此错误。将显示此错误,因为你正在使用的本地存储库将具有与你尝试检索的项目不同的历史记录。

如果项目中的 .git 目录已被删除或损坏,你可能会遇到此错误。在这种情况下,Git 命令行可能无法读取你本地项目的历史记录。

当你尝试将数据推送到远程存储库或从远程存储库提取数据时,将发生此错误。这是因为 Git 不知道远程存储库是否与你当前的存储库兼容。

# 如何解决 "fatal: refusing to merge unrelated histories" ?

要解决此问题,你可以在 --allow-unrelated-histories 从存储库中提取数据时使用该标志:

» 更多: Git 错误:无法拉取...
git pull origin master --allow-unrelated-histories

就可以将远程 master 分支拉取合并到本地分支。

或者,你可以使用 git clone 克隆远程存储库的新版本并重新开始。但是通常不需要这样做。

你可以在官方 Git 文档中阅读更多关于 --allow-unrelated-histories 标志的信息。

# 结论

"fatal: refusing to merge unrelated histories" 发生在 .git 目录不可读或尝试从具有自己的提交历史的存储库中提取数据时。这个错误告诉你,你正在尝试将两个不相关的项目合并到同一个工作树。

你可以很容易使用 --allow-unrelated-histories 标志来解决此错误!