38

git拉取并使用对我正在使用的本地存储库的最新更改git pull

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

运行“hg update”以获取工作副本

我确实跑步hg update,但我想知道为什么这与git?

4

3 回答 3

63

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

在 Mercurial 中,pull与此相反push:它将本地存储库与远程存储库同步,而无需触及工作副本。所以更加一致。

在 Git 中,pull是 a fetchplus amerge或 Mercurial 术语中的 a pullplus an update。通常这就是你想要的。所以效率更高。

分布式版本控制大学演讲4 分钟的标记处有一张幻灯片,清楚地展示了 Mercurial 的工作方式。Michael Ernst 的版本控制概念和最佳实践有一个类似的图表(如下所示):

分布式版本控制

于 2014-03-16T23:14:51.190 回答
24

因为git pull在内部执行git fetchand git merge,而hg pull仅执行执行的git fetch操作。就做吧hg pull -u。另请参阅此命令等效表

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

当然 Mercurial 和 Git 在内部使用不同的数据结构,所以在某些时候在实现细节上存在技术差异。如果您真的很在意它,只需比较hg pullgit fetch的文档。Git 的措辞更具技术性和冗长,但最终都是一样的。

于 2013-10-09T11:15:29.060 回答
3

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

于 2013-10-15T11:50:30.953 回答