Git refusing to merge unrelated histories. What is 'unrelated histories'?
在本地,我创建了新的文本文件->git add new file.txt->commit->pull origin master->error!
"拒绝合并无关历史"。
什么是无关的历史?,什么是相关历史?
- 如何设置本地存储库?你运行过git init和git remote add ...吗?遥控器是什么?你想做什么?
- 分支指向提交。非根提交有一个或多个父级,每个父级提交有自己的一个或多个父级。当两个分支的历史上没有任何共同的祖先时,它们是不相关的。
- 感谢您的评论!我只是想知道什么是"无关历史",而不是解决我的问题。
- Git拒绝合并无关历史的可能副本
我认为您已经在远程存储库中提交了,当您拉入这个错误时就会发生。
使用此命令
1 2
| git pull origin master --allow-unrelated-histories
git merge origin origin/master |
- 我建议在stackoverflow.com/questions/39761024/…阅读。
- 谢谢)。解决办法奏效了。
- 这个解决方案很有帮助,但是请注意,OP实际上需要理解,而不是修复。因此,以上问题中的注释实际上更有用。(我也有同样的问题;我知道如何解决它,但从来没有真正知道"它"是什么……我不明白"无关历史"的真正含义。)
- @jitter指向的链接给出了一个完美且详细的答案。
- 当我必须创建一个新的Github回购,并提交许可证,并与我的项目合并时,这是有效的。我想最好的解决办法是先推,然后再添加其他东西。但如果你犯了我的错误,有人知道怎么做吗?
当本地的.git子目录不知何故丢失时,整个项目似乎不知从何处出现,因为所有的本地变化历史都包含在.git中。因此,您的本地更改变得不相关。这就是为什么所有的变化都被称为unrelated histories。
在这种情况下,git merge or pull请求将无法跟踪您对远程项目添加所做的更改。因此,出现了" refusing to merge unrelated histories"错误。
在这种情况下,如果你试图通过
埃多克斯1〔5〕
git merge origin origin/master-这些命令会造成很多冲突,因为它无法找到您当地的变化历史。
我在Github Enterprise中重命名一个存储库时遇到了这个问题,然后按照下面的步骤生成一个名为repo的存储库。
在远程创建repo示例
克隆到本地
将远程重命名为旧示例
在远程创建名为sample的新repo
试着从本地推它
发生错误。
奇怪的是,我删除了本地repo,但git尝试克隆旧的repo,即使我尝试通过新创建的repo url进行克隆。克隆URL只是自动重定向到旧的URL,即使新的URL存在于远程。我不知道这是因为服务器或本地Git进程。
由于这个原因,发生错误的原因是Git进程无法将其本地提交历史记录与远程历史记录进行比较。
在上述情况下,不相关的历史可以说明。
我最终删除了远程的旧回购协议,它解决了。