2013-10-09 8 views

Antwort

40

Die anderen Antworten beantworten nicht wirklich die Frage, die lautet: Warum funktionieren Git und Mercurial nicht gleich? Gibt es einen philosophischen Unterschied?

In Mercurial ist pull das Gegenteil von push: es synchronisiert das lokale Repo mit einem Remote-Repo ohne die Arbeitskopie zu berühren. Es ist also konsistenter.

In Git ist pull ein fetch plus ein merge oder ein pull plus ein update in Mercurial Bedingungen. Normalerweise ist das was du willst. Es ist also effizienter.

Die Distributed Version Control University talk hat eine Folie bei der 4-minute mark, die deutlich zeigt, wie Mercurial funktioniert. Michael Ernst Version control concepts and best practices hat ein ähnliches Diagramm (auch weiter unten):

Distributed version control

17

Da intern git pull führt git fetch und git merge, während hg pull nur das tut, was git fetch tut. Tun Sie einfach hg pull -u statt. Siehe auch diese command equivalence table.

+0

Gibt es eine theoretische Differenz (wie ein Unterschied in der Herangehensweise) unter dem oder ist es nur ein Vokabular Unterschied? –

+2

Streng Vokabular. Git fetch und mercurial pull machen das Gleiche. Mercurial Fetch und Git Pull machen das Gleiche. –

+0

@Alex Es kommt darauf an, was genau du mit "Annäherung" meinst und auf welcher Ebene du schaust. 'hg pull' ist gleichbedeutend mit' git fetch' auf jeder Ebene, die einem normalen Benutzer wichtig ist. Aber natürlich verwenden Mercurial und Git verschiedene Datenstrukturen intern, so dass es irgendwann einen technischen Unterschied in den Implementierungsdetails gibt. Wenn Ihnen das wirklich wichtig ist, vergleichen Sie einfach die Dokumentation für [hg pull] (http://www.selenic.com/mercurial/hg.1.html#pull) und [git fetch] (http: // git- scm.com/docs/git-fetch.html). Der Git-Wortlaut ist technischer und wortreicher, aber am Ende ist es dasselbe. – sschuberth

2

Um äquivalente Git-Funktionalität zu erhalten, aktivieren Sie die Mercurial-Erweiterung (im Lieferumfang von Mercurial-Distributionen enthalten), siehe . Es wird eine hg pull -u ausführen.