git remote add和git clone的区别

81

clone

命令的作用是什么?svn 中是否有类似的命令?

clone 命令和 svn 中的相应命令有何区别?

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

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

创建的仓库名称是否重要?

我选择的重复问题是你问题的超集:它询问“git remote add; ...其他命令...git clone之间有什么区别”。 - Cascabel
5个回答

70

git remote add 只是在你的 git 配置中创建一个条目,指定特定 URL 的名称。你必须有一个现有的 git 存储库才能使用此功能。

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


你的意思是,在我的例子中,test文件夹会是空的,我需要从test文件夹执行“$git fetch test”命令吗? - nacho4d
@nacho4d:你需要先执行git init,然后再执行git fetchgit merge(或者git pull),但是即使这样,你还是会有一点偏差...请参考我链接的重复内容。 - Cascabel

61

这两种方式在功能上基本相同(试一下!):

 # 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
2
首先...它们仍然是一样的。您实际上可以从上游合并。有了额外的“分支”语句,这意味着您不需要指定上游分支。也就是说,在具有上述“分支”的克隆中,您可以执行“git pull”,而在其他克隆中,您很可能需要执行“git pull origin master”。现在,您实际上也可以使用带有-t标志的“git remote add”添加此分支语句。尝试使用“-t master”和不使用“-t master”的“git remote add” :-) - Wes Hardaker
“--set-upstream” 似乎已经被弃用,这个命令更好用:git branch --set-upstream-to=origin/master master - levsa
我讨厌开发人员从你手中拿走简单的选项。在我看来,无论是pull还是push都应该有更容易的--set-upstream标志。 - Wes Hardaker
@Pharap 好的,没问题。已添加。 - Wes Hardaker
显示剩余3条评论

12

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

如果你克隆了他的存储库,那么你需要进入该本地存储库的目录,然后只需从中检出所需的分支。


11
clone 命令创建指定仓库的本地副本。 remote add 命令添加一个可以推送或拉取的远程仓库。
在 svn 中,checkout 相当于 clone

0

git clone URL -

这个命令会将文件实际下载到你的计算机上。它会占用你计算机的空间。如果仓库大小为200MB,那么它会下载所有文件并放置在克隆目录中。

git remote add origin -

这个命令不会占用空间!它更像是一个指针!它不会增加你的磁盘消耗。它只是获取可用分支及其git提交历史的快照。它不包含项目的实际文件/文件夹。


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