我看到命令'拉'并想知道这与'克隆'有何不同。这两个术语似乎暗示从某个远程存储库中检索代码。这里有一些微妙的区别吗?
答案 0 :(得分:19)
当您需要基于另一个存储库创建新存储库时,请使用克隆。稍后使用 pull 将新的更改集传输到克隆中。你无法使用clone来获取最新的变更集 - 这就是拉动的目的。 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
在这两种情况下,您都会获得完全相同的历史记录。但是,clone命令更方便,因为它还编辑了.hg/hgrc
文件,以便您设置默认路径:
[paths]
default = https://www.mercurial-scm.org/repo/hg/
这使您无需指定URL即可在存储库中执行hg pull
。使用克隆的另一个好处是当您在同一磁盘上使用存储库时:hg clone a b
在磁盘空间方面非常快且便宜,因为b
将与a
共享历史记录。这是使用硬链接完成的,适用于所有平台(Windows,Linux,Mac)。
答案 1 :(得分:11)
hg clone
是如何制作远程存储库的本地副本的。 Subversion等价物是svn checkout
。
hg pull
从另一个存储库中提取更改。 hg update
将这些更改应用于本地存储库。 hg pull -u
相当于hg pull; hg update
。相当于hg pull -u
的Subversion是svn update
。
答案 2 :(得分:2)
clone 创建一个新存储库作为现有存储库的副本。
将所有变更集(尚未存在)从另一个存储库导入现有存储库。