“git remote add”究竟做了什么?

时间:2012-12-09 10:52:17

标签: git version-control

我最近在一个我开始研究的项目中被介绍给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”的本地目录中的整个项目。由于我只使用了一个网址进行克隆,所以做“远程添加”的意思是什么?是否意味着同一个项目(commons-lang)可以托管在多个服务器上,还是我可以通过添加新的远程地址来克隆本地项目中的新项目?

为问题的初学者语气道歉。试图让我的事实彻底失败。感谢。

1 个答案:

答案 0 :(得分:16)

您可以使用git remote add(来自“Git Basics - Working with Remotes”)添加所需数量的上游回复地址。

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

  

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

是的,这是由于Git的分布式特性,因为推送和拉动会将合并工作流程中的出版工作流 which is orthogonal 引入。

  

或者是否可以通过添加新的远程地址来克隆本地项目中的新项目?

没有。您可以从不同的上游回购中获取。

请参阅“Definition of “downstream” and “upstream””。

你在GitHub上分岔时git remotes add的一个经典场景:
请参阅“How do I merge locally a master and a fork in git?

remote add

    在GitHub上克隆你的fork时,为你添加了
  • origin
  • 但是你需要git remote add upstream https://github.com/user/reponame才能使你的本地克隆与原始仓库保持同步(你不能直接贡献一个,这就是为什么你必须在GitHub上做一个分叉的原因)第一名)。