Was ist der Unterschied zwischen "git fetch origin" und "git remote update origin"?

115

Als Antwort auf die Frage, ob jeweils ein Commit aus einem Git-Repository abgerufen werden soll , wurde mir empfohlen, git remote updateanstelle von zu verwenden git fetch. Ich habe beide Manpages gelesen, kann aber nicht sagen, dass ich sie auch vollständig verstanden habe.

Kann mir jemand erklären, wie git fetch originund wie man get remote update originsich anders verhält?

Norman Ramsey
quelle

Antworten:

133

Bei dieser Verwendung macht es keinen Unterschied.

remote updateist ein Befehl auf sehr hoher Ebene - er unterstützt gruppierte Fernbedienungen ( remotes.<group> = <list>) und das Aktualisieren aller Fernbedienungen (außer denen mit remote.<name>.skipDefaultUpdateset), jedoch keine der spezifischeren Abrufoptionen. Unter der Haube funktioniert es jedoch genauso wie beim Abrufen mit den Standardoptionen.

Die Antwort, die remote updateanstelle von git fetch empfohlen wurde, bestand darin, es ohne einen entfernten Namen zu empfehlen, nur um alle abzurufen, nicht nur den als Argument genannten. Dies entspricht git fetch --all.

Ich sollte den Vorbehalt hinzufügen, dass Fetch und Remote Update bis Version 1.6.6.1 (veröffentlicht am 23. Dezember 2009) nicht denselben Codepfad verwendeten. Aber schon vorher haben sie im Wesentlichen das Gleiche getan, nur mit unterschiedlichem Code (möglicherweise in Eckfällen etwas anders verhalten, aber mir fällt nichts ein).

Cascabel
quelle
1
Sehr interessant. +1. Wenn Sie sich die Git-Versionshinweise ansehen (die ich hier zusammengestellt habe: pastebin.com/LNhRhQS3 ), scheint es, dass nur 1.7.0 (kurz nach 1.6.6.2) die git fetch --allVerwendung von " git remote update" anstelle von " " zulässt .
VonC
Ah, ich habe nicht wirklich nachgesehen, wann ich reingegangen fetch --allbin. Ich mache das alles nur durch Variationen von git log --grep=...und git describe --containsin meinem git.git-Klon.
Cascabel
Hm, nun, das ist komisch - Commit 9c4a036b ist "Teach the --all option to 'git fetch'" und git description --contains gibt v1.6.6.1~1^2~9. (Dieselbe Version wie die in meiner Antwort erwähnte Änderung des Remote-Updates, aktualisiert, um dort die Nebenversion hinzuzufügen). Vielleicht war es erst spät, in die Versionshinweise zu kommen?
Cascabel
@Jefromi: Gute Möglichkeit, diese Informationen herauszufinden, aber ich schaue mir lieber zuerst die Versionshinweise an und war frustriert über das Fehlen einer Seite für alle Versionshinweise, daher mein kleines Copy-Paste in Pastebin.
VonC
@Jefromi: Im Moment muss ich einen Weg finden, um alle "Was kocht in Git" zusammenzufassen, um zu sehen, warum Commit 9c4a036b es in der offiziellen Version vor 1.7 nicht geschafft hat;)
VonC