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

div*_*eep 8 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
Run Code Online (Sandbox Code Playgroud)

这导致GIT复制我名为"commons-lang"的本地目录中的整个项目.由于我只使用了一个网址进行克隆,所以做"远程添加"的意思是什么?这是否意味着同一个项目(commons-lang)可以托管在多个服务器上,还是我可以通过添加新的远程地址来克隆本地项目中的新项目?

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

Von*_*onC 16

您可以添加所需的上游回购地址git remote add(来自" Git Basics - 使用遥控器 ").

克隆时,会为您添加一个名为' origin'的内容.

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

是的,这是由于Git的分布式特性,因为推拉引入了与合并工作流正交的发布工作流.

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

不可以.您可以从不同的上游回购中获取.

参见" 下游"和"上游"的定义.

git remotes add在GitHub上分叉时的一个经典场景:
请参阅" 如何在git中本地合并master和fork? "

远程添加

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