Unter der Haube git pull
wird git fetch
von git merge
gefolgt. Hier ist der Fetch-Teil:
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 7 (delta 2), reused 0 (delta 0)
An dieser Stelle haben Sie der Fernbedienung gesagt, was Sie wollen. Es findet alle Objekte, die es Ihnen geben muss (ich zähle sie dabei), komprimiert sie für eine schnellere Übertragung über das Netzwerk und meldet dann, was es Ihnen sendet. Objekte können Blobs, Bäume, Commits oder Tags sein - siehe zum Beispiel die git book für weitere Informationen.
Sie erhalten das Paket (Satz von komprimierten Objekten) und entpacken es.
From ssh://my.remote.host.com/~/git/myproject
* branch master -> FETCH_HEAD
Sie haben den Zweig 'Master' von der angegebenen Fernbedienung abgerufen. der ref FETCH_HEAD zeigt nun darauf. Jetzt gehen wir zum Merge über - genau, git wird FETCH_HEAD (den Master-Zweig der Fernbedienung) in Ihren aktuellen Zweig (vermutlich Master) einbinden.
Updating 9d447d2..f74fb21
Fast forward
Es stellt sich heraus, dass Sie nicht von der Master-Zweig des entfernten abwich haben, so dass die Zusammenführung ist eine Vorspulen (triviale merge, wo es Sie vorwärts in der Geschichte einfach bewegt). Git notiert die ursprüngliche Position Ihres Master-Zweiges (9d447d2) und die neue Position (f74fb21), zu der es weitergeleitet wurde. Wenn Sie vom Master-Zweig des Remote-Rechners abgewichen wären, würden Sie hier die Ausgabe einer rekursiven Zusammenführung sehen - Merge made by recursive
, möglicherweise zusammen mit einigen Auto-merged <file>
und (oh nein!) Zusammenführungskonflikten!
app/controllers/myproject_controller.rb | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
Schließlich zeigt es Ihnen die Diffstat zwischen der ursprünglichen und Post-Merge-Position Ihres Master-Zweigs; Das ist im Grunde, was Sie von git diff --stat [email protected]{1} master
erhalten würden.
+1 "Es stellt sich heraus, dass Sie nicht vom Master-Zweig der Fernbedienung abgewichen sind" - Sie meinen, dass kein neuer Zweig erstellt wurde? Auch was bedeutet ++ oder - –
@Pangea und andere, die sich vielleicht in der Zukunft wundern: Nein, es bedeutet nicht, dass kein neuer Zweig erstellt wurde, es bedeutet einfach, dass Sie nicht gleichzeitig Änderungen begangen haben, die nicht waren noch in der Remote-Filiale enthalten. In diesem Fall gibt es nichts zu verschmelzen, Sie fügen einfach die neuen Commits über Ihrem lokalen Zweig hinzu und sowohl Ihr lokaler Zweig als auch der entfernte Zweig sind identisch. ++ und - sind einfach "grafische" Repräsentationen der Anzahl der Änderungen in jeder Datei (+ werden Insertionen und -'s werden gelöscht) und sagen Ihnen somit ungefähr, wohin die meisten Änderungen gingen. – tne