在git
中提取并使用我本地存储库的最新更改,我正在使用git pull
。
在hg
中,我也使用hg pull
,但它会打印
运行'hg update'以获取工作副本
我确实在运行hg update
,但我想知道为什么这与git
的区别?
答案 0 :(得分:56)
其他答案实际上并没有回答这个问题,即:为什么Git和Mercurial的工作原理不一样?有哲学上的区别吗?
在Mercurial中,pull
与push
相反:它将本地仓库与远程仓库同步而不触及工作副本。所以它更加一致。
在Git中,pull
是一个fetch
加上一个merge
,或一个pull
加一个update
的Mercurial术语。通常这就是你想要的。所以它更有效率。
Distributed Version Control University talk在4-minute mark处有一张幻灯片,清楚地展示了Mercurial的工作方式。 Michael Ernst的Version control concepts and best practices有一个类似的图表(包含在下面):
答案 1 :(得分:23)
因为git pull
在内部执行git fetch
和git merge
,而hg pull
只执行git fetch
所做的事情。只需改为hg pull -u
。另请参阅此command equivalence table。
Git fetch和mercurial pull做同样的事情。 Mercurial fetch和git pull做同样的事情。
当然,Mercurial和Git在内部使用不同的数据结构,因此在某些时候实现细节存在技术差异。如果您真的非常关心它,只需比较hg pull和git fetch的文档。 Git的措辞更具技术性和冗长性,但最终却是相同的。
答案 2 :(得分:3)
要获得等效的git功能,请启用fetch Mercurial扩展(与Mercurial发行版捆绑在一起),请参阅fetch extension。它将执行hg pull -u
。