1. 概述

Git中,有时分支之间没有共同的历史基线。因此,如果我们尝试合并它们,就会得到“拒绝合并不相关的历史记录”的错误。在这个教程中,我们将讨论如何修复这个错误,并在未来的项目中如何避免此类问题。

2. 为什么分支会有不相关的历史?

让我们看看当分支具有不相关历史时的情况。最常见的原因是独立创建分支。例如,如果我们在本地机器上开始一个新的Git项目,然后将其连接到远程GitHub分支,这些分支将有不同的历史基线。

唯一的例外是其中一个分支为空(即没有提交)。在这种情况下,它们应该可以顺利合并。否则,我们会遇到类似下面的错误:

$ git pull origin main
...
fatal: refusing to merge unrelated histories

如图所示,我们不能使用git pull命令来合并具有不同历史的分支。

3. 如何修复错误

要解决上述错误,我们需要在git pull <remote> <branch>命令后使用--allow-unrelated-histories选项,其中

  • <remote>是远程仓库URL或其别名origin
  • <branch>是我们想要合并的分支名称

例如:*

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

--allow-unrelated-histories选项告诉Git允许合并没有共同历史基线的分支,这样就可以顺利完成合并,而不会出现错误。需要注意的是,对于Git版本2.9及更早版本,此选项是不必要的,无需它也能正常合并。要检查Git版本,可以使用git –version命令。

4. 如何在未来避免错误

通常,不在远程仓库的基础上独立创建本地分支不是一个好习惯。更可靠的方法是使用git clone命令将远程仓库下载到本地机器:

$ git clone <repo_url>

这样,我们就从远程服务器复制了仓库,本地和远程分支的提交历史基线将保持一致。

5. 总结

在这篇教程中,我们讨论了如何处理Git在拒绝合并不相关历史记录时的分支合并。我们首先了解了何时会出现这种错误,然后使用了--allow-unrelated-histories选项进行修复。最后,我们学习了如何在未来的项目中避免这类问题。


» 下一篇: 在Java中比较字符