【发布时间】:2013-10-09 11:05:00
【问题描述】:
在git 中提取并使用对我正在使用git pull 的本地存储库的最新更改。
在hg,我也使用hg pull,但它会打印出来
运行“hg update”以获取工作副本
我确实运行hg update,但我想知道为什么这与git 不同?
【问题讨论】:
在git 中提取并使用对我正在使用git pull 的本地存储库的最新更改。
在hg,我也使用hg pull,但它会打印出来
运行“hg update”以获取工作副本
我确实运行hg update,但我想知道为什么这与git 不同?
【问题讨论】:
其他答案实际上并没有回答这个问题,即:为什么 Git 和 Mercurial 的工作方式不同?有哲学上的区别吗?
在 Mercurial 中,pull 与 push 相反:它将本地存储库与远程存储库同步,而无需触及工作副本。所以更加一致。
在 Git 中,pull 是 fetch 加上 merge,或者在 Mercurial 术语中是 pull 加上 update。通常这就是你想要的。所以效率更高。
Distributed Version Control University talk 在4-minute mark 上有一张幻灯片,清楚地展示了 Mercurial 的工作方式。 Michael Ernst 的Version control concepts and best practices 也有类似的图表(如下所示):
【讨论】:
因为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 的措辞更具技术性和冗长,但最终都是一样的。
【讨论】:
要获得等效的 git 功能,请启用 fetch Mercurial 扩展(与 Mercurial 发行版捆绑),请参阅fetch extension。它将执行hg pull -u。
【讨论】: