git 存储库拥有多个遥控器意味着什么?

its*_*ang 5 git github git-remote

我正在阅读 Pro Git,关于远程存储库的部分对我来说有点令人困惑。特别是,有一个部分作者说:

\n\n

http://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

Era*_*ran 7

这个想法是,您可以创建一个远程存储库(“源”)并将项目的代码推送到那里。假设由于您是该项目的创建者,因此您的存储库被视为项目的正式版本。

假设您是唯一允许推送到该远程存储库的人,但其他人可以从中拉取。

因此其他人可以克隆您的存储库并基于它创建自己的远程存储库(例如,GitHub 允许您基于另一个用户的存储库创建远程存储库)。他们可以在自己的存储库上向您的代码添加功能。现在,如果他们想为正式版本(由您维护)做出贡献,他们可以告诉您他们添加的新功能,并要求您将它们添加到您的项目中。

实现此目的的方法之一是将它们的存储库添加为附加远程存储库(bakkdoor、cho45 等......都是此类存储库,它们以创建它们的 GitHub 用户命名)。由于您不拥有这些存储库,因此您只能读取它们。然后,您可以从其中提取您想要的任何更改,并将它们推送到远程存储库,从而将这些更改集成到正式版本中。

这种类型的协作将在 Pro Git 书中稍后讨论。你应该继续阅读,一切都会变得更加清晰。