Git 中的 Fatal: Refusing to Merge Unrelated Histories 错误

本文概述了Git 中解决 fatal: refusing to merge unrelated histories 错误所需的步骤。 我们通常在尝试将两个不相关的 Git 项目合并到一个分支时遇到这样的错误。

当接收分支有提交,并且克隆有不兼容的标签时,它会弹出。


fatal: refusing to merge unrelated histories 的常见场景

以下是一些您可能会遇到致命错误的情况:拒绝在 Git 中合并不相关的历史记录错误。

  1. 您有一个包含提交的本地存储库,并尝试从现有的远程存储库中提取。 由于历史不同,Git 不知道如何进行。 因此出现错误消息。
  2. 您的 .git 目录已损坏。
  3. 当您的分支机构位于不同的 HEAD 位置时。

解决 fatal: refusing to merge unrelated histories

我们可以通过允许不相关的合并来解决错误。 我们可以通过在拉取请求中添加 –allow-unrelated-histories 标志来做到这一点,如下所示。

$ git pull origin master --allow-unrelated-histories

Git 将允许您合并具有不相关历史的分支。 如果您的文件不冲突,这很容易。

上面的方法是最简单的; 但是,到达同一目的地的路线更长。

首先,您必须取消暂存所有当前提交并存储它们。 然后,您可以从远程存储库中提取并将存储应用到新的克隆。

这使得在发生合并冲突时更容易处理合并冲突。

要取消暂存上次提交中的所有文件,请使用以下命令。

$ git reset HEAD~

运行下面的命令来存储文件。

$ git stash

现在您有一个干净的工作树,您可以运行拉取请求,之后您将取消隐藏并将隐藏的更改应用到工作树。 你可以运行:

$ git stash pop

上面的命令将应用存储并丢弃它。 如果你想申请并保留 stash,你可以运行:

$ git stash apply

话虽如此,避免此错误消息的最简单方法是什么?

避免将远程存储库拉入包含提交的本地分支。 如果必须,请创建一个新分支并手动拉取和合并更改。

总之,当我们试图合并具有不同提交历史的分支时,会发生 fatal: refusing to merge unrelated historys 错误。 我们已经介绍了解决错误的两种方法以及如何最好地避免错误。