我正在阅读Pro Git,有关远程存储库的部分对我来说有点混乱。特别是,作者说有一节:
http://git-scm.com/book/en/Git-Basics-Working-with-Remotes
“如果你有多个遥控器,那么命令会列出所有遥控器。例如,我的Grit存储库看起来像这样。
$ cd grit
$ git remote -v
bakkdoor git://github.com/bakkdoor/grit.git
cho45 git://github.com/cho45/grit.git
defunkt git://github.com/defunkt/grit.git
koke git://github.com/koke/grit.git
origin git@github.com:mojombo/grit.git
这意味着我可以非常轻松地从这些用户中获取贡献。但请注意,只有源远程是一个SSH URL,所以它是我唯一可以推送的(我们将在第4章介绍这个原因)。“
我的问题是,与砂砾有关的四个远程存储库(bakkdoor,cho,defunkt,koke)是什么?他们的回购是否构成了砂砾回购?或者他们是同一个砂砾回购的单独副本?或者他们根本没有关系?
此外,如果砂砾回购由4个单独的回购组成,为什么它们分别命名?将它们全部置于“起源”之下会不会更有意义?
正如你所看到的,我几乎完全迷失了。我觉得向我解释的方式正好在我的头上。
答案 0 :(得分:1)
这个想法是你可以创建一个远程存储库(" origin")并在那里推送你的项目代码。让我们说因为您是该项目的创建者,您的存储库被认为是您项目的正式版本。
假设您是唯一允许推送到该远程存储库的人,但其他人可以从中获取。
因此,其他人可以克隆您的存储库并基于它创建自己的远程存储库(例如,GitHub允许您基于另一个用户的存储库创建远程存储库)。他们可以在自己的存储库中为您的代码添加功能。现在,如果他们想要为正式版本(由您维护)做出贡献,他们可以告诉您他们添加的新功能,并要求您将它们添加到您的项目中。
您这样做的一种方法是将其存储库添加为其他远程存储库(bakkdoor,cho45等等......是这样的存储库,它们以创建它们的GitHub用户命名)。由于您不拥有这些存储库,因此您只能拥有对它们的读取权限。然后,您可以从中获取所需的任何更改,并将它们推送到远程存储库,从而将这些更改集成到正式版本中。
这种类型的合作将在后面的Pro Git书中讨论。你应该继续阅读,一切都会变得更加清晰。