拉入恢复的存储库时,拒绝合并不相关的历史记录失败(&Quot;) [英] "refusing to merge unrelated histories" failure while pulling to recovered repository

查看:0
本文介绍了拉入恢复的存储库时,拒绝合并不相关的历史记录失败(&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

然后,由于某种原因,您丢失了本地的.git子目录-其中包含从12的所有历史记录。但是,您成功地还原了当前状态。

但现在它没有任何历史--看起来整个项目都是凭空出现的。如果你要求Git合并它们,它将无法说出你的更改在哪里,所以它可以将它们添加到远程项目中,据我所知,它只会报告大量的添加/添加冲突。

现在您应该从您克隆项目远程历史记录中找到提交(我假设您在那之后没有拉回;如果您拉回了,则应该查找您上次拉出的提交)。然后,您应该修改您的历史记录,使其从提交1开始,然后Git将能够正确地合并(例如,使用Pull)。

因此,这些步骤(假设您现在正在进行无历史记录的已还原提交):

  • 根据提交时间估计克隆的提交1的位置1?,例如
  • 运行git diff _1?_..HEAD,仔细阅读。确保差异只包含您所做的编辑。如果它包含更多,则您应该选择了一点错误1?,需要调整它并重复此步骤
  • 找到提交后1。您应该将其设置为您的父级;执行git --reset --soft _1_,然后git commit

现在看起来您已经从1克隆,然后使用您的所有更改提交了一次。您的中间历史记录无论如何都会与旧的.git目录一起丢失,但现在您可以运行git pull-它将正确合并。

这篇关于拉入恢复的存储库时,拒绝合并不相关的历史记录失败(&Quot;)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆