在git重新启动/开发过程中,git显示以下错误消息:

fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef

我的Git版本是2.9.0。它在以前的版本中运行良好。

我如何才能继续使用新版本中引入的强制标志来允许不相关的历史?


当前回答

我尝试了git pull——允许不相关的历史记录,但它没有奏效,但这为我解决了问题:

我将桌面存储库中的所有文件复制到另一个文件夹,然后删除该文件夹。然后我再次克隆存储库,因为它是一个新项目。当我再次复制我的文件并将其推送时,它就像魅力一样发挥作用。

其他回答

1.解决问题

执行git pull原始主机时出现以下错误:

fatal: refusing to merge unrelated histories

运行以下命令之一

 # It could be master
 git pull origin master --allow-unrelated-histories

 # Or main
 git pull origin main --allow-unrelated-histories

 # Or just try with origin
 git pull origin main --allow-unrelated-histories

如果它打开nano编辑器,您只需按Ctrl+X保存并关闭即可。

现在在本地推送更改

 git push

2.含义

错误:

当两个不相关的项目(即,不知道彼此存在且提交历史不匹配的项目)合并时,会出现“致命:拒绝合并不相关的历史”Git错误。

getmerge命令(来自GitHub文档):--允许不相关的历史记录:--允许不相关的历史记录

默认情况下,gitmerge命令拒绝合并不共享共同祖先的历史记录。当合并两个独立启动的项目的历史记录时,可以使用此选项覆盖此安全性。由于这是非常罕见的情况,因此默认情况下没有启用此功能的配置变量,也不会添加。


工具书类

推荐:“致命:拒绝合并不相关的历史”Git错误Git 2.9发行说明


有关堆栈溢出的更多信息

推荐使用--允许不相关的历史记录的一个很好的解释和警告:在拉到恢复的存储库时“拒绝合并不相关的记录”失败如果--允许不相关的历史记录不起作用:添加Git远程后“致命:拒绝合并不相关历史记录”Git拒绝合并不相关的历史。什么是“无关历史”?该用户使用GitHub桌面:如何解决在将项目上传到GitHub时“拒绝合并不相关的历史记录”的问题?Git失败,出现致命错误,拒绝将无关历史与Git推送合并

我认为这是一种非常罕见的情况;您已删除远程(例如,原点):

git remote rm origin

然后,过了一段时间,出于某种原因,您尝试将其添加回去,但输入了错误的URL。

git remote add origin git@github.com:example/wrong.git

当然,解决方案是使用正确的URL:

git remote add origin git@github.com:example/correct.git

在我的案例中,错误是致命的:每次尝试都拒绝合并不相关的历史记录,尤其是远程添加Git存储库后的第一次拉取请求。

使用--allow不相关的历史标记以这种方式处理拉取请求:

git pull origin branchname --allow-unrelated-histories

根据2.9.0发行说明,git pull已被教导将--allow unrelated history选项传递给基础git merge

如果您有存储库的浅Git克隆,也会发生这种情况。

我最近在CI/CD设置中遇到了这个问题,以前的解决方案都不适合我。我正在构建一个CI/CD管道,以分析MR源分支的MR创建代码。为此,我需要在main分支上运行一次分析,然后在与main合并的MR源分支上运行分析,在尝试通过gitmerge命令合并分支时出现了这个错误。

CI/CD设置中出现这种情况的原因:通常在CI/CD环境中,Git存储库是一个用来加快速度的浅层克隆,它不包括完整的提交历史,因此,在合并Git时,我们可能会认为我们正在尝试合并不相关的分支,这实际上是不正确的。

解决方案:

使用以下命令将浅存储库转换为非浅存储库:

git fetch --unshallow

首先,使用以下命令将远程更改拉到本地:

git pull origin branchname --allow-unrelated-histories

**在我的情况下,branchname是master。

当执行pull命令时,会发生冲突。你应该解决冲突。我使用Android Studio解决冲突。

当冲突解决后,合并就完成了!

现在你可以安全地推了。