【问题标题】:Why do I need hg update after hg pull while in git I'm doing only git pull为什么我在 git 中只做 git pull 时在 hg pull 之后需要 hg update
【发布时间】:2013-10-09 11:05:00
【问题描述】:

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

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

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

我确实运行hg update,但我想知道为什么这与git 不同?

【问题讨论】:

    标签: git mercurial


    【解决方案1】:

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

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

    在 Git 中,pullfetch 加上 merge,或者在 Mercurial 术语中是 pull 加上 update。通常这就是你想要的。所以效率更高。

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

    【讨论】:

      【解决方案2】:

      因为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 的措辞更具技术性和冗长,但最终都是一样的。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-11-10
          • 2020-02-22
          • 1970-01-01
          • 2021-06-16
          • 2019-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多