拉入恢复的存储库时,拒绝合并不相关的历史记录失败(&;Quot;) [英] "refusing to merge unrelated histories" failure while pulling to recovered repository
本文介绍了拉入恢复的存储库时,拒绝合并不相关的历史记录失败(&;Quot;)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我遇到一个有关Git推送的问题。
它以前工作成功,但这次失败了。一开始,我在我的主人MINGW64 /d/javasoft/apache-tomcat-7.0.70/webapps/MyNote (master)
中,然后,
- 我使用
git remote add origin
来关联我的远程来源,但它提醒fatal: remote origin already exists.
- 然后,我使用
git remote rm origin
(有人告诉我),可以了。 - 然后,我再次使用
git remote add origin https://github.com/***/***.git
。没关系。 - 然后,我使用
git push -u origin master
(我尝试了git push origin master
,但之前由于某种原因丢失了我的本地整体.git
,所以我猜这可能是第一次推流,我应该添加-u
)。但是,它会提醒error: failed to push some refs to 'https://github.com/***/***.git'
- 然后,有人告诉我在使用
push
之前应该使用git pull origin master
,我照做了。但是,它警告说:fatal: refusing to merge unrelated histories
。 - 我在Git refusing to merge unrelated histories on rebase中找到了一些答案,但似乎不起作用。在我的问题中,它提醒
fatal: Couldn't find remote ref –allow-unrelated-histories
我真的不知道该怎么办……我只想推动...
推荐答案
此问题无法很快得到答复。
警告:您不应使用--allow-unrelated-histories
标志,除非您知道什么是不相关的历史记录并确定您需要它。引入检查只是为了防止人们错误地合并不相关的项目时发生灾难。
据我所知在您的情况下发生了以下:
您在某个点克隆了一个项目1
,并对点2
进行了一些开发。与此同时,项目已经发展到某种程度3
。
1
到2
的所有历史记录。但是,您成功地还原了当前状态。
但现在它没有任何历史--看起来整个项目都是凭空出现的。如果你要求Git合并它们,它将无法说出你的更改在哪里,所以它可以将它们添加到远程项目中,据我所知,它只会报告大量的添加/添加冲突。
现在您应该从您克隆项目远程历史记录中找到提交(我假设您在那之后没有拉回;如果您拉回了,则应该查找您上次拉出的提交)。然后,您应该修改您的历史记录,使其从提交1开始,然后Git将能够正确地合并(例如,使用Pull)。
因此,这些步骤(假设您现在正在进行无历史记录的已还原提交):
- 根据提交时间估计克隆的提交
1
的位置1?
,例如 - 运行
git diff _1?_..HEAD
,仔细阅读。确保差异只包含您所做的编辑。如果它包含更多,则您应该选择了一点错误1?
,需要调整它并重复此步骤 - 找到提交后
1
。您应该将其设置为您的父级;执行git --reset --soft _1_
,然后git commit
。
1
克隆,然后使用您的所有更改提交了一次。您的中间历史记录无论如何都会与旧的.git
目录一起丢失,但现在您可以运行git pull
-它将正确合并。
这篇关于拉入恢复的存储库时,拒绝合并不相关的历史记录失败(&;Quot;)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文