在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。它在以前的版本中运行良好。
我如何才能继续使用新版本中引入的强制标志来允许不相关的历史?
当前回答
警告:这可能会覆盖远程存储库
这对我有用:
git push origin master --force
其他回答
您可以使用--允许不相关的历史记录强制合并。
这背后的原因是自Git 2.9以来,默认行为发生了变化:
“gitmerge”用于合并两个没有公共项的分支默认情况下,这导致了现有项目被创建,然后被一个不知情的维护人员拉住,这允许将不必要的并行历史合并到现有项目。命令已被教导不允许这样做默认情况下,带有转义线--允许不相关的历史记录选项用于合并两个项目历史的罕见事件独立开始他们的生活。
有关更多信息,请参阅Git发布变更日志。
更多信息可以在这个答案中找到。
我遇到了同样的问题:
这是我所做的:
git pull origin main --allow-unrelated-histories
我使用Visual Studio代码解决了合并冲突,然后我做到了:
git commit -m "commit message"
git push origin main
致命的:拒绝合并不相关的历史也可能是由于肤浅的克隆造成的,因为嫁接提交没有深入到足以看到共同的基础。
我也犯了同样的错误,这个命令对我有效:
git pull gitlab master --allow-unrelated-histories
请注意,在您的案例中,gitlab可能是origin或heroku。
由于您既不能推,也不能拉和推,也无法合并拉和推:
您可以在GitHub存储库上创建一个新分支。然后:git添加。gitcommit-m'commitName'并在终端的当前目录中引用该分支。git branch-m master branchNamegit push-f原始分支名称您的代码将被推送到新的分支。然后你可以合并这两个分支。
这对我有用。