Frage

das Äquivalent von git remote update Ist git fetch?

War es hilfreich?

Lösung

UPDATE: Weitere Informationen

ich dies von Anfang an hätte tun sollen: (! So meta) ich die Git Release Notes in Git Git Repo grep

grep --color=always -R -C30 fetch Documentation/RelNotes/* | less

Dann habe ich eine less Suche nach --all, und das ist, was ich unter dem Release notes für Git Version 1.6.6 :

  

git fetch gelernt --all und --multiple Optionen, laufen aus vielen Repositories zu holen, und --prune Option Remote-Tracking-Zweige zu entfernen, die abgestanden ging. Diese machen git remote update und git remote prune weniger notwendig (es gibt keinen Plan remote update noch remote prune zu entfernen, obwohl).

Version 1.6.6 wurde nicht freigegeben, bis Dezember 23. 2009 und das Originalposter gebeten, seine Frage am 6. Dezember 2009.

So wie können Sie in den Versionshinweisen sehen, die Autoren von Git der Tatsache bewusst waren, dass die git remote update Befehl Funktionalität etwas von git fetch dupliziert wurde, aber sie beschlossen, es nicht zu entfernen, vielleicht für die Abwärtskompatibilität mit vorhandenen Skripten und Programme, oder vielleicht, weil es einfach zu viel Arbeit und es gibt eine höhere Priorität Elemente.


Original Antwort mit mehr Details

xenoterracide Antwort beträgt 3,5 Jahre alt geworden, und Git hat sich seitdem durch mehrere Versionen gegangen (es ist weg von v1.6.5.5 zum Zeitpunkt des Schreibens v1.8.3.2) und an der Strom Dokumentation git remote update und git fetch , sieht es aus wie sie> starke < beide können im Grunde durchführen die gleiche Funktion von neuen Commits von mehreren Fernbedienungen zu holen , die richtigen Optionen und Argumente gegeben.

Fetching alle Fernbedienungen

Eine Möglichkeit, mehr Fernbedienungen mit der --all Flagge zu holen:

git fetch --all

Dieses von allen Ihren konfigurierten Fernbedienungen holen wird, vorausgesetzt, dass Sie nicht remote.<name>.skipFetchAll Satz für sie haben:

  

Wenn das stimmt, wird diese Fernbedienung standardmäßig übersprungen werden, wenn die Aktualisierung mit git-fetch (1) oder das Update subcommand von git-Fernbedienung (1) . - git-config-Dokumentation

Dies wäre gleichbedeutend mit mit

git remote update

ohne jede Remote-Gruppe zu spezifizieren, zu holen und auch remotes.default Satz in Ihrer Repo-Konfiguration nicht mit, und auch, dass keine Ihrer Fernbedienungen hat auf true remote.<name>.skipDefaultUpdate gesetzt.

Die aktuelle 1.8.3.2 Dokumentation für Git Konfiguration nicht die remotes.default Einstellung nicht erwähnt, aber ich konsultierte der Allmächtige Google darüber und fanden diese Informationen hilfreich explAnation von Mislav Marohnic wissen :

$ git config remotes.default 'origin mislav staging'
$ git remote update

# fetches remotes "origin", "mislav", and "staging"
  

Sie können eine Standardliste von Fernbedienungen definieren durch den remote update Befehl geholt werden. Diese können Fernbedienungen sein von Ihren Teamkollegen, vertrauenswürdige Community Mitglieder eines Open-Source-Projekt, oder ähnliches.

So vermutlich, wenn Sie remotes.default gesetzt haben, und nicht alle Ihre Fernbedienungen darin aufgeführt sind, dann werden git remote update nicht alle Fernbedienungen holen, die Ihre Repo ist „bewusst“.

Wie für die remote.<name>.skipDefaultUpdate Einstellung, es erklärt die Git docs so:

  

Wenn das stimmt, wird diese Fernbedienung standardmäßig übersprungen werden, wenn die Aktualisierung mit git-fetch (1) oder das Update subcommand von git-Fernbedienung (1) .

eine bestimmte Gruppe von Fernbedienungen Fetching

Anstatt alle Fernbedienungen zu holen, die beide fetch und remote update können Sie mehrere Fernbedienungen und Gruppen von Fernbedienungen angeben zu holen:

git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]

git fetch [<options>] <group> ermöglicht es Ihnen, mehrere Fernbedienungen zu holen, die Teil einer Gruppe (leihweise ein weiteres Beispiel von Mislav ) wussten:

$ git config remotes.mygroup 'remote1 remote2 ...'
$ git fetch mygroup

git fetch --multiple können Sie verschiedene Repositories und Repository-Gruppen angeben, auf einmal zu holen (von die Dokumentation ):

  

Lassen Sie mehrere <repository> und <group> Argumente angegeben werden. Keine <refspec>s angegeben werden.

Mehrdeutigkeit in git remote update Dokumentation

Die Synopsis für git remote update gibt an, daß die Befehlssyntax ist wie folgt:

git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]

Beachten Sie den letzten Teil, [(<group> | <remote>)…]? Die hinteren Punkte ... implizieren, dass Sie mehrere Gruppen und Fernbedienungen mit dem Befehl angeben können, was bedeuten würde, es auf die gleiche Art und Weise wie git fetch --multiple verhält ... sehen, wie die Syntax zwischen den beiden ist so ähnlich?

Doch in demselben Dokument, die Erklärung für den update Befehl sagt nichts über mehrere Gruppen und Fern Argumente spezifiziert, nur, dass es

  

Fetch [es] Updates für eine benannte Gruppe von Fernbedienungen im Repository definiert durch remotes.<group>.

Es ist also unklar, ob git remote update funktioniert identisch in Bezug auf git fetch --multiple auf mehrere einzelne Fernbedienungen und mehrere Remote-Gruppen angeben.

Lesen einer einzigen Fernbedienung

Schließlich weiß jeder, den einfachen Fall eine einzige Fernbedienung zu holen:

git fetch <remote>

Es könnte der Fall sein, dass Sie auch verwenden können,

git remote update <remote>

, um das Gleiche zu tun, aber wie ich im vorigen Abschnitt erwähnte, ist die Dokumentation für git remote update ist unklar, ob es möglich ist, etwas anderes als eine einzelne Gruppe holen von Fernbedienungen mit dem Befehl.

Nachbearbeiten

Wie ich bereits erklärt habe, git fetch und git remote update verhalten sich ähnlich hinsichtlich von mehreren Fernbedienungen zu holen. Sie haben ähnliche Syntax und Argumente, obwohl git fetch kürzer ist, soMenschen wahrscheinlich finden es einfacher, zu geben und zu verwenden.

Es kann der Fall sein, dass git remote update kann nicht verwendet werden, nur eine einzige Fernbedienung zu holen wie mit git fetch, aber wie ich darauf hingewiesen habe, wird die Dokumentation nicht macht dies deutlich.

neben

Die Vervielfältigung in Funktionalität zwischen Git Porzellan Befehlen, am Beispiel von git fetch und git remote update oben, ist nicht eindeutig. Ich habe eine ähnliche Situation mit git rebase --onto und git cherry-pick , dass sowohl eine Reihe von Commits nimmt Patch auf eine neue Basis zu begehen.

Ich denke, das als Git im Laufe der Jahre entwickelt hat, war einige Funktionen (unvermeidlich?) Dupliziert, vielleicht manchmal als Service für Endanwender (zum Beispiel, dann ist es einfacher, einen Bereich passieren zu cherry-pick, als eine einzelne passieren commit über und über einen Bereich zu holen). Offenbar hat cherry-pick nicht immer eine Reihe von Commits akzeptieren, wie sie in der v1.7.2 Release notes :

  

git cherry-pick lernte eine Reihe von Commits zu holen (z cherry-pick A..B und cherry-pick --stdin), so git revert tat; diese nicht unterstützen, die schönere Ablaufsteuerung rebase [-i] hat, though.

Andere Tipps

Ja und nein. git remote update holt aus allen Fernbedienungen, nicht nur eine.

auf dem Code Ohne einen Blick zu sehen, ob remote update nur ein Shell-Skript ist (möglich) es, im Grunde läuft für jeden entfernten holen. git fetch kann viel mehr granular sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top