一、概述
在Git 中,有时分支没有共同的历史库。因此,如果我们尝试合并它们,我们会得到“refusing to merge unrelated histories”
错误。在本教程中,我们将讨论如何修复此错误以及如何在未来的项目中避免此错误。
2. 为什么分支可以有不相关的历史?
让我们看看分支有不相关历史时的场景。拥有不相关的历史记录库的最常见原因是彼此独立地启动分支。例如,如果我们在本地机器上启动一个新的Git 项目,然后将其连接到远程GitHub 分支,这些分支将具有不同的历史记录库。
唯一的例外是其中一个分支没有提交。在这种情况下,它们应该毫无问题地合并。否则,我们将得到“refusing to merge unrelated histories”
,如下例所示:
$ 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
选项来修复它。最后,我们学会了如何在未来的项目中避免这个错误。
0 评论