2016-07-07 34 views
64

我正在学习git,并且我正在关注Git社区书籍。试图从我的Github存储库中提取文件:“拒绝合并不相关的历史”

之前(很久以前)我在Github上制作了一个公共仓库,附带一些文件。现在,我在当前的计算机上设置了一个本地Git存储库,并提交了一些文件。然后我添加了一个远程指向我Github的页面:

[[email protected] c]# git remote add learnc https://github.com/michaelklachko/Learning-C 

这似乎是成功的:

[[email protected] 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库的文件下载到我的电脑。我这样做:

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

但是,我没有看到我的本地目录中有任何新文件。我怎样才能得到它们?

我也试着这样做:

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

顺便说一句,在当地我在主分支(没有其他分支机构):

[[email protected] c]# git status 
On branch master 
nothing to commit, working directory clean 
+2

当你设置你的本地仓库时,你克隆了你的Github仓库还是只是做了'git init'?在后一种情况下,这些回购是无关的(没有共同的提交),你不能合并它们(拉取取+合并)。 – Paul

+0

我做了git init。那么我应该克隆我的Github仓库解决这个问题吗? – MichaelSB

+0

你可以克隆你的Github仓库并继续使用它,但它仍然是单独的仓库。你想合并两个不相关的历史吗? – Paul

回答

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

解决冲突,然后

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

如果没有实质性的历史上的一端(又名如果它仅仅是一个单一的自述提交在github上结束),我经常发现它更容易自述手动复制到我的本地回购,并做一个git push -f使我的版本成为新的根提交。

我觉得它稍微简单一点,不需要记住一个隐蔽的标志,并且保持历史更清晰。

15

虽然我全力解决人们的工作问题,但我不认为“推 - 力”或“--allow_unrelated_histories”应作为一般解决方案教给新用户,因为他们可能会对存储库造成严重破坏当一个人不明白为什么事情不起作用的时候使用它们。

当你遇到这样的情况时,你开始使用本地存储库,并且希望在GitHub上创建一个远程来分享你的工作,但有一点需要注意。

当您创建新的联机存储库时,有一个选项“使用自述文件初始化此存储库”。如果您阅读了精美版本,则说“如果您要导入现有存储库,请跳过此步骤。”

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

参考资料:我第一次使用git + hub的经验是遇到同样的问题,并进行大量的学习来了解发生了什么以及为什么。

0

当您将远程URL设置为错误的名称时,您也会看到此错误!检查您是否已正确设置远程网址。

相关问题