2013-10-09 8 views
23

gitでローカルリポジトリの最新の変更を取得して使用しています。私はgit pullを使用しています。 hgなぜgitでhg pullをした後にgit pullだけしているのですか

が、私は、なぜgitからこの差があるだろう、私はまたhg pullを使用しますが、それは私がhg updateを実行しない作業コピー

を取得するために、その後

実行「HG update」を出力しますか?

答えて

40

他の答えは、実際にはこの質問には答えません。なぜ、GitとMercurialは同じ働きをしないのですか?哲学的に違いはありますか?

Mercurialでは、pullpushの反対です。作業コピーに触れずにローカルリポジトリとリモートリポジトリを同期させます。だから一貫しています。 Gitので

pullはMercurialの用語でfetchプラスmerge、又はpullプラスupdateあります。通常、これはあなたが望むものです。だから、より効率的です。

Distributed Version Control University talkには、Mercurialの動作を明確に示す4-minute markのスライドがあります。その下に

Distributed version control

17

git pullは内部でgit fetchgit mergeを実行しますが、hg pullgit fetchとなります。代わりにhg pull -uを実行してください。このcommand equivalence tableも参照してください。

+0

(アプローチの違いのような)いずれかの理論的な差があるか、それだけで語彙の違いです:マイケル・エルンストのVersion control concepts and best practicesは同様の図(以下に含まを)持っていますか? –

+2

厳密な語彙。 Gitフェッチと水銀引き出しは同じことをします。 Mercurialのフェッチとgit pullは同じことをします。 –

+0

@Alexそれは、あなたが「アプローチ」とは何を意味し、どのレベルを見ているかによって異なります。 'hg pull'は通常のユーザが気にするべきレベルで' git fetch'と同じです。もちろん、MercurialとGitは内部的に異なるデータ構造を使用しているため、実装の詳細に技術的な違いがあります。あなたが本当に心配しているのであれば、[hg pull](http://www.selenic.com/mercurial/hg.1.html#pull)と[git fetch](http:// git- scm.com/docs/git-fetch.html)。 Gitの言葉遣いはより技術的で冗長ですが、結局は同じです。 – sschuberth

2

同等のgit機能を使用するには、MercurialディストリビューションにバンドルされているMercurial拡張機能を有効にします(fetch extensionを参照)。 hg pull -uが実行されます。