its*_*ang 5 git github git-remote
我正在阅读 Pro Git,关于远程存储库的部分对我来说有点令人困惑。特别是,有一个部分作者说:
\n\nhttp://git-scm.com/book/en/Git-Basics-Working-with-Remotes
\n\n“如果您有多个遥控器,该命令会列出所有遥控器。例如,我的 Grit 存储库看起来像这样。
\n\n$ cd grit\n$ git remote -v\nbakkdoor git://github.com/bakkdoor/grit.git\ncho45 git://github.com/cho45/grit.git\ndefunkt git://github.com/defunkt/grit.git\nkoke git://github.com/koke/grit.git\norigin git@github.com:mojombo/grit.git\n
Run Code Online (Sandbox Code Playgroud)\n\n这意味着我可以很容易地从这些用户中获取贡献。但请注意,只有源远程是 SSH URL,因此它\xe2\x80\x99 是我唯一可以推送到的地址(我们\xe2\x80\x99 将在第 4 章中介绍为什么会这样)。”
\n\n我的问题是,与 grit 相关的四个远程存储库(bakkdoor、cho、defunkt、koke)是什么?它们构成了 grit 仓库吗?或者它们是同一个 grit 存储库的不同副本?或者他们根本没有关系?
\n\n此外,如果 grit 存储库由这 4 个独立的存储库组成,为什么它们要单独命名?将它们全部放在“origin”下不是更有意义吗?
\n\n正如你所看到的,我对此几乎完全迷失了。我觉得他们向我解释的方式让我无法理解。
\n这个想法是,您可以创建一个远程存储库(“源”)并将项目的代码推送到那里。假设由于您是该项目的创建者,因此您的存储库被视为项目的正式版本。
假设您是唯一允许推送到该远程存储库的人,但其他人可以从中拉取。
因此其他人可以克隆您的存储库并基于它创建自己的远程存储库(例如,GitHub 允许您基于另一个用户的存储库创建远程存储库)。他们可以在自己的存储库上向您的代码添加功能。现在,如果他们想为正式版本(由您维护)做出贡献,他们可以告诉您他们添加的新功能,并要求您将它们添加到您的项目中。
实现此目的的方法之一是将它们的存储库添加为附加远程存储库(bakkdoor、cho45 等......都是此类存储库,它们以创建它们的 GitHub 用户命名)。由于您不拥有这些存储库,因此您只能读取它们。然后,您可以从其中提取您想要的任何更改,并将它们推送到远程存储库,从而将这些更改集成到正式版本中。
这种类型的协作将在 Pro Git 书中稍后讨论。你应该继续阅读,一切都会变得更加清晰。