Was ist der Unterschied zwischen "Git Remote Update", "Git Fetch" und "Git Pull"?

78

Ich fange jetzt an mit Git zu spielen und bin ein bisschen verwirrt. Für mich sieht es so aus, als gäbe es viele Möglichkeiten, dasselbe zu tun. Meine Frage für den Moment ist, was der Unterschied zwischen den folgenden Befehlen ist:

  • Git Remote Update
  • Git holen
  • Git Pull

Welches eignet sich auch besser zum Aktualisieren einer lokalen Kopie eines Remote-Zweigs?

Davi Garcia
quelle

Antworten:

102

git remote update aktualisiert alle Ihre Zweige, die so eingestellt sind, dass sie entfernte Zweige verfolgen, führt jedoch keine Änderungen in zusammen.

git fetch aktualisiert nur den Zweig, in dem Sie sich befinden, führt jedoch keine Änderungen in zusammen.

git pullaktualisiert und führt alle Remote-Änderungen des aktuellen Zweigs zusammen, in dem Sie sich befinden. Dies ist derjenige, mit dem Sie einen lokalen Zweig aktualisieren.

Makoto
quelle
6
git fetchaktualisiert andere Zweige, wenn Sie möchten. Versuchen Siegit fetch --all
Arafangion
7
Wussten Sie, dass Sie mithilfe von refspecs tatsächlich Schnellvorlauf-Zusammenführungen mit Abrufen durchführen können?: git fetch origin master:master. Dies funktioniert nur, wenn Sie nicht masterausgecheckt haben, da Git den Verzweigungszeiger verschieben muss und dies nicht tut, wenn Sie sich gerade in der Verzweigung befinden.
8
'get fetch' scheint alle Zweige abzurufen, wenn ich es mache, auch ohne den Schalter --all. (Git für Windows 2.10.0.1)
Simon P Stevens
14
Diese Antwort weist mehrere Fehler auf. Meistens stammen sie aus der Verwechslung der Fernverfolgungszweige mit regulären Zweigen, was ein großer Fehler ist. git fetchaktualisiert nicht den "Zweig, in dem Sie sich befinden". Es werden jedoch alle Fernverfolgungszweige für die Fernbedienung aktualisiert originoder welche Fernbedienung der Upstream-Verfolgungszweig für die aktuelle Fernbedienung ist.
Colin D Bennett
18
Lesen Sie auch die SEHR vollständige Antwort unter stackoverflow.com/a/17512004/994153, in der beschrieben wird, wie git fetch --alles zu einem bestimmten Zeitpunkt nicht gab und git remote updatewas nützlicher ist. Nun, --alldas hinzugefügt wurde git fetch, git remote updateist nicht wirklich notwendig.
Colin D Bennett
-7

Ich bin mir nicht sicher über das Git-Remote-Update, aber Git Pull ist der Git-Abruf, gefolgt von einer Git-Zusammenführung ...

Dies ist teilweise ein Duplikat. Check: Was ist der Unterschied zwischen 'Git Pull' und 'Git Fetch'?

Wenn es Ihnen etwas bedeutet, habe ich weder git remote update noch fgit fetch verwendet. Sie können gut mit Ziehen, Festschreiben und Drücken tun.

Ich hoffe es hilft..

LucasA
quelle
1
git fetchhat seinen Platz ... manchmal interessiert es Sie nur, wie viele Filialen Ihr Manager beschnitten hat; Manchmal möchten Sie nur die Updates von dem Zweig, in dem Sie sich befinden.
Makoto
Ich denke, es macht Sinn =)
LucasA
2
Ich benutze fast nie git pull, ich mag es immer, vorgelagerte Änderungen in der Vorschau anzuzeigen, bevor ich sie zusammenführe, also benutze ich meistens git fetch.
Normalerweise wollen Sie nicht für Ihre Arbeit-in-progress Zweig Master noch verschmelzen, so ist es besser, git remote updateund git rebasebis Ihre Arbeit ist fertig zusammengeführt werden. Andernfalls werden Sie nur eine Reihe nutzloser Zusammenführungs-Commits in der Historie erhalten.
user2061057