"拒绝合并不相关的历史"失败,同时拉回到恢复的存储库

Cal*_*haw 23 git github

我想出了一个关于git push的问题.它以前运作成功,但这次失败了.一开始,我在我的主人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'
  • 然后,有人告诉我,git pull origin master在使用之前我应该使用push,而且我这样做了.但是,它警告:fatal: refusing to merge unrelated histories.
  • 我在Git中找到了一些拒绝合并不相关历史的答案 ,但似乎它没有用.在我的问题中,它提醒了fatal: Couldn't find remote ref –allow-unrelated-histories

真的不知道怎么办......只想推..

max*_*630 77

这不能很快回答.

警告:除非您知道什么是不相关的历史记录并确定需要,否则不应使用该--allow-unrelated-histories标志.引入检查只是为了防止人们错误地合并无关项目时的灾难.

据我了解,在您的情况下发生了以下情况:

你已经克隆了一个项目1,并进行了一些开发2.与此同时,项目已经发展到一定程度3.

在此输入图像描述

然后你出于某种原因失去了你的本地git的子目录-其中载有所有的历史12.您设法恢复当前状态.

在此输入图像描述

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

现在应该做的1从你已经克隆项目的远程历史中找回那个提交(我假设你之后没有拉,如果你这样做,那么你应该寻找你已经提取的最后一个提交).然后你应该修改你的历史,以便从那个提交1开始,然后git将能够正确合并(例如拉).

所以,这些步骤(假设你现在处于没有历史记录的恢复提交中):

  • 例如,根据提交时间估计1您从某些方面克隆的1?提交位置
  • 运行git diff _1?_..HEAD,并仔细阅读,确保差异仅包含您所做的编辑.如果它包含更多,那么你应该选错了1?,需要调整它并重复这一步
  • 找到提交后1,你应该把它作为你的父母git --reset --soft _1_,然后做git commit.

在此输入图像描述

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

  • 我发现在将现有存储库导入Github中新创建的存储库时,必须使用该标志. (7认同)