在git重新启动/开发过程中,git显示以下错误消息:
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
我的Git版本是2.9.0。它在以前的版本中运行良好。
我如何才能继续使用新版本中引入的强制标志来允许不相关的历史?
在git重新启动/开发过程中,git显示以下错误消息:
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
我的Git版本是2.9.0。它在以前的版本中运行良好。
我如何才能继续使用新版本中引入的强制标志来允许不相关的历史?
当前回答
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推送合并
其他回答
我在第一次设置本地存储库时遇到了这个错误。然后我去了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
由于所有其他答案实际上都没有回答这个问题,所以这里有一个由这个相关问题的答案启发的解决方案。
因此,您在执行git rebase时出错:
$ git rebase origin/development
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
此错误实际上并没有取消基,但您现在正处于其中:
$ git status
interactive rebase in progress; onto 4321beefdead
Last command done (1 command done):
pick 1234deadbeef1234deadbeef test merge commit
现在您可以手动进行合并。查找原始合并提交的父提交:
$ git log -1 1234deadbeef1234deadbeef
commit 1234deadbeef1234deadbeef
Merge: 111111111 222222222
Author: Hans Dampf
Date: Wed Jun 6 18:04:35 2018 +0200
test merge commit
找出两个合并父级中的哪一个是合并到当前父级的父级(可能是第二个,请使用git日志222222222进行验证),然后手动进行合并,复制原始合并提交的提交消息:
$ git merge --allow-unrelated 222222222 --no-commit
Automatic merge went well; stopped before committing as requested
$ git commit -C 1234deadbeef1234deadbeef
[detached HEAD 909af09ec] test merge commit
Date: Wed Jun 6 18:04:35 2018 +0200
$ git rebase --continue
Successfully rebased and updated refs/heads/test-branch.
致命的:拒绝合并不相关的历史也可能是由于肤浅的克隆造成的,因为嫁接提交没有深入到足以看到共同的基础。
警告:这可能会覆盖远程存储库
这对我有用:
git push origin master --force
通过切换“允许无关历史记录”开关来解决该错误。在Git pull或Git merge命令后,添加以下标记:
git pull origin master --allow-unrelated-histories
之后,也许你会有冲突。所以,解决冲突,并付诸实施。这对我很有用。