我看到命令“拉”,想知道这与“克隆”有何不同。这两个术语似乎都暗示从某个远程存储库中检索代码。这里有一些微妙的区别吗?
3 回答
当您需要基于另一个存储库创建新存储库时,请使用克隆。稍后使用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)。
hg clone
是您如何制作远程存储库的本地副本。Subversion 等价物是svn checkout
.
hg pull
从另一个存储库中提取更改。 hg update
将这些更改应用到本地存储库。 hg pull -u
相当于hg pull; hg update
。Subversion 等价于hg pull -u
.svn update
clone创建一个新的存储库作为现有存储库的副本。
pull 将所有变更集(尚未存在)从另一个存储库导入到现有存储库中。