试图从我的Github存储库中提取文件:“拒绝合并不相关的历史记录”

时间:2016-07-07 21:33:49

标签: git github git-pull git-fetch

我正在学习git,我正在关注Git社区书籍。

以前(很久以前)我在Github上创建了一个公共存储库,包含一些文件。现在我在当前的计算机上设置了一个本地Git存储库,并提交了一些文件。然后我添加了一个指向我的Github页面的遥控器:

[root@osboxes c]# git remote add learnc https://github.com/michaelklachko/Learning-C

这似乎很成功:

[root@osboxes c]# git remote show learnc
* remote learnc
  Fetch URL: https://github.com/michaelklachko/Learning-C
  Push  URL: https://github.com/michaelklachko/Learning-C
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (local out of date)

现在我想将文件从我的Github repo下载到我的电脑。我这样做了:

[root@osboxes c]# git fetch learnc
[root@osboxes c]# git merge learnc/master
warning: refname 'learnc/master' is ambiguous.
Already up-to-date.

但是,我在本地目录中看不到任何新文件。我怎么能得到它们?

我也试过这样做:

[root@osboxes c]# git pull learnc master
From https://github.com/michaelklachko/Learning-C
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

BTW,本地我在主分支上(没有其他分支):

[root@osboxes c]# git status
On branch master
nothing to commit, working directory clean

8 个答案:

答案 0 :(得分:274)

尝试--allow-unrelated-histories

与max630评论一样,或者如此处所解释的Git refusing to merge unrelated histories

答案 1 :(得分:87)

git checkout master
git merge origin/master --allow-unrelated-histories

解决冲突,然后

git add -A .
git commit -m "Upload"
git push

答案 2 :(得分:34)

虽然我全都是为了解决人们的工作问题,但我认为不应该将“push -force”或“--allow_unrelated_histories”作为一般解决方案传授给新用户,因为它们可能会对存储库造成真正的破坏。一个人使用它们而不理解为什么事情本来就不起作用。

当你遇到这样的情况时,你开始使用本地存储库,并希望在GitHub上创建一个遥控器来分享你的工作,有一些值得注意的地方。

创建新的在线存储库时,有一个选项“使用自述文件初始化此存储库”。如果您阅读了小字,则会显示“如果您要导入现有存储库,请跳过此步骤。”

您可能已经选中了该框。或者类似地,您在尝试初始推送之前在线添加/提交。如果你在每个地方创建一个独特的提交历史,如果没有Nevermore的答案中提到的特殊限额,它们就无法协调(因为git不希望你以这种方式运行)。你可以按照这里提到的一些建议,或者更简单地说,下次你想将一些本地文件链接到一个全新的遥控器时,不要检查该选项;保持远程清洁以进行初始推送。

参考:我第一次使用git + hub遇到了同样的问题并做了很多学习,以了解发生了什么以及为什么。

答案 3 :(得分:11)

如果一端没有实质性的历史(也就是说它只是github端的一个自述提交),我经常发现将自述文件手动复制到我的本地仓库并执行git push -f更容易使我的版本成为新的root提交。

我发现它稍微复杂一些,不需要记住一个模糊的标志,并保持历史更清洁。

答案 4 :(得分:6)

在您的分支机构-说出主人,拉扯并允许不相关的历史记录

git pull origin master --allow-unrelated-histories

为我工作。

答案 5 :(得分:1)

当我使用--allow-unrelated-histories时,此命令产生了太多冲突。我什至没有处理文件中的冲突。为了克服错误" Refusing to merge unrelated histories",我使用了以下rebase命令:

git pull --rebase=preserve --allow-unrelated-histories

在此提交之后,未提交的更改将带有提交消息。最后,运行以下命令:

git rebase --continue

此后,我的工作副本与远程副本是最新的,因此我能够像以前一样推送更改。拉取时不再有无关的历史错误。

答案 6 :(得分:0)

执行以下命令:

git pull origin master --allow-unrelated-histories

合并vim将打开。添加一些合并消息,然后:

  1. 按ESC
  2. 按Shift +';'
  3. 按'w',然后按'q'。

你很好。

答案 7 :(得分:0)

在我的情况下,也遇到了同样的问题,尤其是在远程添加Git存储库后尝试的第一个请求请求。 面临以下错误。

fatal: refusing to merge unrelated histories on every try

使用--allow-unrelated-histories命令。效果很好。

git pull origin branchname --allow-unrelated-histories