6

我看到命令“拉”,想知道这与“克隆”有何不同。这两个术语似乎都暗示从某个远程存储库中检索代码。这里有一些微妙的区别吗?

4

3 回答 3

18

当您需要基于另一个存储库创建新存储库时,请使用克隆。稍后使用pull将新的变更集传输到克隆中。你不能使用 clone 来获取最新的变更集——这就是 pull 的用途。pull 命令将比较两个存储库,在您的存储库中找到缺失的变更集并最终传输这些变更集。

但是,您说得对,克隆和拉取之间有相似之处:它们都在存储库之间传输历史记录。如果你先克隆

hg clone https://www.mercurial-scm.org/repo/hg/

那么这与做的效果完全相同

hg init hg
cd hg
hg pull https://www.mercurial-scm.org/repo/hg/
hg update

在这两种情况下,您都会获得完全相同的历史记录。但是,克隆命令更方便,因为它还会编辑.hg/hgrc文件以设置默认路径:

[paths]
default = https://www.mercurial-scm.org/repo/hg/

这就是让您hg pull无需指定 URL 即可在存储库中执行的操作。使用克隆的另一个优点是当您在同一个磁盘上使用存储库时:hg clone a b在磁盘空间方面将非常快速且便宜,因为b将与a. 这是使用硬链接完成的,适用于所有平台(Windows、Linux、Mac)。

于 2009-09-09T10:07:16.040 回答
11

hg clone是您如何制作远程存储库的本地副本。Subversion 等价物是svn checkout.

hg pull从另一个存储库中提取更改。 hg update将这些更改应用到本地存储库。 hg pull -u相当于hg pull; hg update。Subversion 等价于hg pull -u.svn update

于 2009-09-09T05:47:43.703 回答
2

clone创建一个新的存储库作为现有存储库的副本。

pull 将所有变更集(尚未存在)从另一个存储库导入到现有存储库中。

于 2009-09-09T14:52:53.563 回答