Git拒绝合并不相关的历史在rebase上。

在 "git rebase origin/development "过程中,Git显示了以下错误信息。

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

我的Git版本是2.9.0。在之前的版本中,它曾经工作正常。

我怎样才能继续这个重定位,允许不相关的历史与新版本中引入的强制标记?

从Git 2.9开始,默认行为已经改变。

"git merge"曾经允许合并没有共同基础的两个分支。 的两个分支,这就导致了一个现有项目的全新历史被创建,然后被不知情的维护者拉走。 项目的全新历史,然后被不知情的维护者拉走。 这使得一个不必要的平行历史被合并到 导致不必要的平行历史被合并到现有项目中。该命令已被教导不允许在默认情况下这样做。 默认情况下不允许这样做,但有一个 "允许不相关的历史 "的选项。 允许不相关的历史 "选项,以便在极少数情况下,合并两个独立的项目的历史 在极少数情况下,可以使用 "允许不相关的历史 "选项来合并两个独立开始的项目的历史。

更多信息见Git release changelog

你可以使用--allow-unrelated-histories来强制合并。

评论(6)

在我的例子中,错误只是 "致命的:拒绝合并不相关的历史",每次都是这样,尤其是远程添加Git仓库后的第一个拉动请求。

使用 "允许不相关的历史 "标志可以在这样的拉动请求中发挥作用。

git pull origin branchname --allow-unrelated-histories
评论(10)

我也在为这个问题挣扎,但我设法找到了一个解决方法。

当你遇到上面的错误时,只需挑出合并提交,然后继续重新建立。

git cherry-pick -m 1 1234deadbeef1234deadbeef
git rebase --continue
评论(1)