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

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

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

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


当前回答

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

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

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

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

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

其他回答

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

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

git pull origin branchname --allow-unrelated-histories

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

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

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

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

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

对于Android Studio和IntelliJ:

首先,承诺一切并解决任何冲突。

然后从IDE下方打开终端并输入:

git pull origin master --allow-unrelated-histories

现在你可以推了。

如果您在GitHub上创建了一个新的存储库,并意外地用README或.gitignore文件初始化了它。

如果您发现由于.git文件夹损坏而无法合并或重新创建基。

然后:

创建新文件夹git克隆将所有文件粘贴到此文件夹

现在,本地和远程将拥有“相关历史”,并将愉快地合并或重新基础。

尝试git pull--重新基础开发