为什么我在git中使用hg后需要hg更新而在git中我只做git pull

时间:2013-10-09 11:05:00

标签: git mercurial

git中提取并使用我本地存储库的最新更改,我正在使用git pull

hg中,我也使用hg pull,但它会打印

运行'hg update'以获取工作副本

我确实在运行hg update,但我想知道为什么这与git的区别?

3 个答案:

答案 0 :(得分:56)

其他答案实际上并没有回答这个问题,即:为什么Git和Mercurial的工作原理不一样?有哲学上的区别吗?

在Mercurial中,pullpush相反:它将本地仓库与远程仓库同步而不触及工作副本。所以它更加一致。

在Git中,pull是一个fetch加上一个merge,或一个pull加一个update的Mercurial术语。通常这就是你想要的。所以它更有效率。

Distributed Version Control University talk4-minute mark处有一张幻灯片,清楚地展示了Mercurial的工作方式。 Michael Ernst的Version control concepts and best practices有一个类似的图表(包含在下面):

Distributed version control

答案 1 :(得分:23)

因为git pull在内部执行git fetchgit merge,而hg pull只执行git fetch所做的事情。只需改为hg pull -u。另请参阅此command equivalence table

Git fetch和mercurial pull做同样的事情。 Mercurial fetch和git pull做同样的事情。

当然,Mercurial和Git在内部使用不同的数据结构,因此在某些时候实现细节存在技术差异。如果您真的非常关心它,只需比较hg pullgit fetch的文档。 Git的措辞更具技术性和冗长性,但最终却是相同的。

答案 2 :(得分:3)

要获得等效的git功能,请启用fetch Mercurial扩展(与Mercurial发行版捆绑在一起),请参阅fetch extension。它将执行hg pull -u