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

Ale*_*tin 37 git mercurial

git拉,并使用我用我的本地库中的最新变化git pull.

hg,我也使用hg pull但它打印然后

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

我确实跑了,hg update但我想知道为什么这有区别git

Mik*_*kel 59

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

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

在Git中,pull是Mercurial术语中的fetch加号a mergepull加号update.通常这就是你想要的.所以效率更高.

分布式版本控制大学的谈话具有在幻灯片4分钟大关,清楚地表明水银的工作方式.Michael Ernst的版本控制概念和最佳实践有类似的图表(包含在下面):

分布式版本控制


ssc*_*rth 23

由于git pull在内部执行git fetchgit merge,而hg pull仅做什么git fetch呢.只是做hg pull -u.另请参见此命令等效表.

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

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