2010-04-22 7 views
110

Als Antwort auf a question about pulling one commit at a time from a git repository wurde mir empfohlen, git remote update anstelle von git fetch zu verwenden. Ich habe beide Manpages gelesen, kann aber nicht sagen, dass ich sie vollständig verstanden habe.Was ist der Unterschied zwischen 'git fetch ursprung' und 'git remote update origin'?

Kann mir jemand erklären, wie git fetch origin und get remote update origin sich anders verhalten?

+3

möglich duplicate of [Unterschiede zwischen git remote update und fetch?] (Http://stackoverflow.com/questions/1856499/differences-between-git-remote-update-and-fetch) –

Antwort

128

Es macht keinen Unterschied, wenn Sie so verwendet werden.

remote update ist ein sehr High-Level-Befehl - es unterstützt gruppierte Fernbedienungen (remotes.<group> = <list>) und die Aktualisierung alle Fernbedienungen (mit Ausnahme der mit remote.<name>.skipDefaultUpdate Satz), aber nicht von den spezielleren Optionen zu holen. Unter der Haube macht es genau dasselbe wie fetch mit den Standardoptionen.

Die Antwort, die remote update anstelle von git fetch empfiehlt, empfahl es tatsächlich ohne einen entfernten Namen, nur um alle zu holen, nicht nur den, der als ein Argument genannt wurde. Dies entspricht git fetch --all.

Ich sollte den Vorbehalt hinzufügen, dass fetch und remote update nicht den gleichen codepath bis v1.6.6.1 (freigegeben am 23. Dezember 2009) verwendet. Aber schon vorher haben sie im Grunde genommen dasselbe gemacht, indem sie nur einen anderen Code benutzt haben (der sich in den Fällen mit Ecken vielleicht etwas anders verhält, aber ich kann mir nichts von meinem Kopf denken).

+0

Sehr interessant. +1. Wenn Sie sich die Versionshinweise zu Git ansehen (die ich hier zusammengestellt habe: http://pastebin.com/LNhRhQS3), scheint es, dass nur die 1.7.0 (kurz nach 1.6.6.2) "' git fetch --all "erlaubt "anstelle von" 'git remote update'' verwendet werden. – VonC

+0

Ah, ich habe nicht wirklich überprüft, wann 'fetch --all' reingegangen ist. Ich mache das alles nur durch Variationen von 'git log --grep = ...' und 'git describe --contains' in meinem Git. Git Klon. – Cascabel

+0

Hm, nun, das ist seltsam - commit 9c4a036b ist "Unterrichten Sie die --alle Option zu 'git fetch'", und git beschreiben --contains gibt 'v1.6.6.1 ~ 1^2 ~ 9'. (Die gleiche Version wie die Remote-Update-Änderung, die ich in meiner Antwort erwähnt habe, aktualisiert, um die Minor-Release-Version dort hinzuzufügen). Vielleicht war es erst spät, in die Release Notes zu kommen? – Cascabel

Verwandte Themen