git
拉取并使用对我正在使用的本地存储库的最新更改git pull
。
在hg
,我也使用hg pull
,但它会打印出来
运行“hg update”以获取工作副本
我确实跑步hg update
,但我想知道为什么这与git
?
其他答案实际上并没有回答这个问题,即:为什么 Git 和 Mercurial 的工作方式不同?有哲学上的区别吗?
在 Mercurial 中,pull
与此相反push
:它将本地存储库与远程存储库同步,而无需触及工作副本。所以更加一致。
在 Git 中,pull
是 a fetch
plus amerge
或 Mercurial 术语中的 a pull
plus an update
。通常这就是你想要的。所以效率更高。
分布式版本控制大学演讲在4 分钟的标记处有一张幻灯片,清楚地展示了 Mercurial 的工作方式。Michael Ernst 的版本控制概念和最佳实践有一个类似的图表(如下所示):
因为git pull
在内部执行git fetch
and git merge
,而hg pull
仅执行执行的git fetch
操作。就做吧hg pull -u
。另请参阅此命令等效表。
Git fetch 和 mercurial pull 做同样的事情。Mercurial fetch 和 git pull 做同样的事情。
当然 Mercurial 和 Git 在内部使用不同的数据结构,所以在某些时候在实现细节上存在技术差异。如果您真的很在意它,只需比较hg pull和git fetch的文档。Git 的措辞更具技术性和冗长,但最终都是一样的。
要获得等效的 git 功能,请启用 fetch Mercurial 扩展(与 Mercurial 发行版捆绑在一起),请参阅fetch extension。它将执行一个hg pull -u
.