0%

Lokal zusammenarbeiten

Pull ist Fetch plus Integration

Ein lokaler Branch und sein Upstream können bereits übereinstimmen, sodass es keine neue Arbeit zu integrieren gibt. Dieser geklärte Zustand ist der sicherste Ort, um Gits bequemen Befehl git pull zu untersuchen, solange du seine beiden Teile gedanklich sichtbar hältst.

Fetch aktualisiert die lokale Aufzeichnung origin/main, ohne main zu verschieben. Pull ruft zuerst ab und integriert dann. Es kann deshalb main und den Arbeitsbaum verändern.

Die Abbildung zeigt einen Fast-Forward-Pull. Andere Pulls können stattdessen einen Merge-Commit erstellen oder einen Rebase ausführen.

Pull erledigt zwei Aufgaben

Der Befehl git pull ruft zuerst vom Upstream-Remote ab und aktualisiert Remote-Tracking-Informationen wie origin/main. Danach integriert er den abgerufenen Upstream-Branch in den aktuellen lokalen Branch. Dieser zweite Schritt ist kein allgemeines Synonym für Merge: Git lässt sich so konfigurieren oder ausdrücklich anweisen, dass es zusammenführt, einen Rebase ausführt oder nur einen Fast-Forward zulässt. Anders als ein Fetch kann ein Pull deshalb den lokalen main und den Arbeitsbaum verändern.

Dein Repository shop ist bereits vollständig zusammengeführt und gepusht. Den einfachen Befehl jetzt auszuführen, ist sicher, weil nichts Neues zu integrieren ist:

git pull
git status

Git meldet, dass der Branch bereits auf dem neuesten Stand ist, und der Arbeitsbaum bleibt sauber. Wären die Verläufe auseinandergelaufen und noch keine bevorzugte Integrationsart gewählt, könnte eine moderne Git-Version anhalten und dich wählen lassen, statt zu raten. Deshalb war git fetch mit anschließender Prüfung und einem ausdrücklichen git merge origin/main der richtige Lernweg für die frühere Divergenz.

Hosting-Werkzeuge bauen auf demselben Austausch auf

Die Übungen verwendeten einen lokalen Pfad für origin. Bei einem Hosting-Dienst speichert ein Remote stattdessen meist eine HTTPS- oder SSH-URL. Die URL ändert, wie Git das andere Repository erreicht. Sie ändert nicht, was Commits, Branches, origin oder origin/main bedeuten. Der Dienst kann eine Authentifizierung verlangen: einen Nachweis, dass dein Konto dieses Repository lesen oder aktualisieren darf. Die Einrichtung von Konten, Tokens und Schlüsseln gehört zum Dienst, nicht zu Gits Verlaufsmodell.

Ein Fork ist ein weiteres Repository, das ein Hosting-Dienst unter einem anderen Konto oder Namensraum anlegt. Er ist kein Branch und auch nicht die Arbeitskopie, die git clone erstellt. Du kannst einen Fork klonen und mit ihm Commits austauschen, indem du dieselben Abläufe mit fetch, merge, pull und push verwendest, die du lokal geübt hast.

Ein Pull Request, bei manchen Diensten Merge Request genannt, ist ein Vorschlag auf einer Hosting-Plattform, Commits zu prüfen und einen Branch in einen anderen zu integrieren. Er ist kein Commit und nicht der Befehl git pull. Die Website ergänzt Diskussion und Review rund um die Git-Verläufe. Die Verläufe treffen weiterhin über die Integrationsabläufe zusammen, die du bereits kennst.

Was tut git pull, wenn main dem Branch origin/main folgt?

Das sichere Muster unter lokalen wie gehosteten Werkzeugen ist jetzt ausdrücklich klar: Rufe ab, um das Wissen deines Repositorys aufzufrischen, vergleiche die Verläufe, integriere ohne Verlust einer Seite und pushe nur, wenn der gemeinsame letzte Commit ein Vorfahr des Ergebnisses bleibt.