"git remote add" 究竟做了什么?

12

最近在我开始参与的一个项目中接触到了git,这鼓励我开始阅读Scott Chacon的在线版本的《Pro Git》。

书中有一节简要介绍了添加“远程存储库”的主题。由于Git是分布式SCM,我理解使用GIT的常见情况是在本地机器上“克隆”远程存储库并在本地副本上工作。当你完成所有更改并将所有更改提交到本地副本后,然后将更改“推送”到远程存储库,以便其他人也可以查看你的更改。

这就引出了我的问题——从我所了解的内容来看,“git remote add”实际上是将远程存储库添加为一种简写符号,我们以后可以使用它。我不明白的是,由于我只指定了一个存储库URL来克隆,那么我如何在我的本地项目目录下添加多个存储库URL呢?

具体来说,假设我使用以下命令检出Apache commons-lang项目:

git clone git://git.apache.org/commons-lang.git

这会导致GIT将整个项目复制到我本地目录中命名为“commons-lang”的文件夹中。由于我只使用了一个克隆的url,那么在这里做“remote add”是什么意思?这是否意味着同一项目(commons-lang)可以托管在多个服务器上,还是说我可以通过添加新的远程地址在我的本地项目中克隆一个新项目?

对于问题的初学者般的语气表示歉意。只是想让自己的事实清楚无误。谢谢。

1个回答

18

您可以使用 git remote add 添加任意数量的上游仓库地址(来自“Git基础-使用远程仓库”)。

克隆时,会为您添加一个名为“origin”的仓库。

这是否意味着相同的项目(commons-lang)可以托管在多个服务器上,

是的,这是由于 Git 的分布式特性,因为推送和拉取引入了与合并工作流不相关的发布工作流(正交的)

还是说我可以通过添加新的远程地址在我的本地项目中克隆一个新项目?

不行。您可以从不同的上游仓库获取代码。

请参阅““下游”和“上游”的定义”。

有一个经典的场景需要使用 git remotes add,就是在 GitHub 上进行 fork 操作时:
请参见 "如何在本地合并 git 中的主分支和 fork 分支?"

remote add

  • 当你在GitHub上克隆你的fork时,origin会自动添加。
  • 但是你需要运行git remote add upstream https://github.com/user/reponame命令,以便你的本地克隆与原始存储库保持最新(你不能直接向原始存储库贡献,这就是为什么你首先要在GitHub上创建一个fork的原因)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接