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

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

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

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


当前回答

我在第一次设置本地存储库时遇到了这个错误。然后我去了GitHub并创建了一个新的存储库。然后我跑了

git remote add origin <repository url>

当我尝试推或拉时,我每次都会遇到同样的致命错误:unlated_histories错误。

以下是我修复它的方法:

git pull origin master --allow-unrelated-histories
git merge origin origin/master
... add and commit here...
git push origin master

其他回答

blue112的答案并不能解决这个问题,这是在重新定基的背景下。

同步两个分支的唯一方法是将它们合并在一起,从而产生一个额外的合并提交和两组包含相同更改的提交(原始提交和来自重新基础分支的提交)。不用说,这是一个非常令人困惑的情况。

因此,在运行git-rebase之前,请先问问自己,“还有人在看这个分支吗?”如果答案是肯定的,请把手从键盘上拿开,开始思考一种非破坏性的方法来进行更改(例如,git-restore命令)。否则,你可以随心所欲地重写历史。

参考资料:回扣的黄金法则

由于您既不能推,也不能拉和推,也无法合并拉和推:

您可以在GitHub存储库上创建一个新分支。然后:git添加。gitcommit-m'commitName'并在终端的当前目录中引用该分支。git branch-m master branchNamegit push-f原始分支名称您的代码将被推送到新的分支。然后你可以合并这两个分支。

这对我有用。

在管理员在服务器端通过几百次提交将开发分支强制推送给origin/master之后,我遇到了这个错误。

嗯,我只是不想拉(fetch+merge),而是想将本地主机与远程源主机对齐。移动到一个单独的文件夹并进行Git克隆是一种方法,但我认为仅进行硬重置是更优雅的解决方案。

因此,我对这个错误的回答,在这个特定的例子中,不是上述任何一种。

我只是想要这个:

git reset --hard origin/master

您可以使用--允许不相关的历史记录强制合并。

这背后的原因是自Git 2.9以来,默认行为发生了变化:

“gitmerge”用于合并两个没有公共项的分支默认情况下,这导致了现有项目被创建,然后被一个不知情的维护人员拉住,这允许将不必要的并行历史合并到现有项目。命令已被教导不允许这样做默认情况下,带有转义线--允许不相关的历史记录选项用于合并两个项目历史的罕见事件独立开始他们的生活。

有关更多信息,请参阅Git发布变更日志。

更多信息可以在这个答案中找到。

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推送合并