git remote add和git clone之间的区别


74

clone命令做什么?svn中有与之等效的东西吗?

之间有什么区别

git remote add test git://github.com/user/test.git

git clone git://github.com/user/test.git

创建的仓库的名称重要吗?



我选择了重复是你的问题的一个超集的类型:它要求“有什么区别betweeengit remote add; ...other commands...git clone
Cascabel

Answers:


68

git remote add只需在git配置中创建一个条目,为特定的URL指定一个名称。您必须已有一个git repo才能使用它。

git clone 通过复制位于您指定的URI上的现有git存储库来创建新的git存储库。


您的意思是,例如,在我的示例中,测试文件夹将为空,而我必须从测试文件夹中进行“ $ git fetch test”?
nacho4d 2011年

@ nacho4d:您必须先执行操作git init,然后再执行git fetchgit merge(或git pull)操作,然后您仍然需要一点点...查看我链接的重复项。
卡斯卡贝尔2011年

54

这些在功能上相似(尝试!):

 #git clone REMOTEURL foo

和:

 #mkdir foo
 #cd foo
 #git init
 #git remote add origin REMOTEURL
 #git pull origin master
 #cd ..

现在有细微的差别,但是从根本上讲,您可能不会注意到它们。作为练习留给读者,比较每个目录中的.git / config。


2
我试过了 使用时clone,.git / config具有[branch“ master”]部分。这是否意味着在使用clone(将来)时,我可以合并该分支,而不能合并remote add
nacho4d 2011年

2
好吧,首先...他们还是一样。您实际上可以从上游以任何一种方式合并。有了额外的“ branch”语句,这意味着您无需指定上游分支。IE,在其中具有上述“分支”的克隆中,您可以执行“ git pull”,而在其他情况下,您最有可能需要执行“ git pull origin master”。现在,您实际上也可以使用带有-t标志的“ git remote add”来添加此分支语句。尝试使用带“ -t master”和不带“ -t master”的“ git remote add” :-)
Wes Hardaker

@ nacho4d:您可以使用以下命令在.git / config中获得相同的[branch“ master”]部分git branch --set-upstream master origin/master。这就是第三个命令我使用后git remote add,并git pull已上市,而那些3个命令似乎给了我一个相同的配置是什么git clone会做。
2012年

--set-upstream似乎已被弃用,这样效果更好:git branch --set-upstream-to=origin/master master
levsa

当开发人员将简单的选择从您身边拿走时,我会讨厌它。恕我直言,pull和push应该具有更简单的--set-upstream标志。
Wes

11

clone命令创建您指定的存储库的本地副本。remote add添加一个远程存储库,您可以将其推入或拉出。

svn的相当于clonecheckout


...我认为您的意思是remote add添加一个远程回购,您可以将其拉入或从中推入
瑞安·蔡斯

6

git clone

会将文件实际下载到您的计算机中。它将占用您计算机的空间。如果存储库为200Mb,则它将下载所有存储库并将其放置在克隆的目录中。

git remote add

不会占用空间!更像是指针!它不会增加磁盘消耗。我相信它只是获得了可用的分支及其git提交历史的快照。它不包含项目的实际文件/文件夹。

如果您这样做:

git remote add TechLeadRepo  git://github.com/user/test.git

则您尚未向计算机添加任何内容。将其添加到远程分支中之后,您可以通过执行以下操作来获取该远程上所有分支的列表:

git fetch --all

提取(或提取)后,您下载文件,然后如果想要将同事的feature22分支分支到本地,则只需执行

git checkout -b myLocalFeature22 TechLeadRepo/feature22

如果您克隆了他的存储库,那么您将不得不进入该本地存储库的目录,仅checkout进入所需的分支

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.