Remotes ohne Server · Übung
Main pushen und seinen Upstream festlegen
Das Bare-Repository origin.git existiert, hat aber noch keine Commits oder Branches. Ein Push sendet Commits und aktualisiert eine Referenz in einem anderen Repository. Du pushst den Branch main von garden und hältst fest, mit welchem Remote-Branch er normalerweise Daten austauscht.
Den Push-Befehl lesen
git push sendet Verlauf und eine Referenz an ein Remote. In git push -u origin main wählt origin das gespeicherte Remote und main den zu sendenden Branch aus. Die Option -u ist die Kurzform von --set-upstream: Nach einem erfolgreichen Push trägt sie main in origin als Upstream des lokalen main ein.
Ein Upstream ist die standardmäßige Beziehung eines lokalen Branchs zu einem Remote-Branch. Sobald der lokale main dem main von origin folgt, können spätere Pushes von main ein einfaches git push verwenden. Außerdem kann git status die beiden Positionen vergleichen.
Führe den ersten Push aus:
git push -u origin main
Git erstellt main in origin.git. Außerdem erstellt oder aktualisiert es origin/main innerhalb von garden. Der Schrägstrich bedeutet kein Verzeichnis: origin/main ist eine Remote-Tracking-Referenz, die lokale Aufzeichnung der Position des Remote-Branchs, die dein Repository zuletzt gesehen hat.
Die beiden Positionen lesen
Du weißt bereits, dass git log den Commit-Verlauf liest. Wenn du dahinter eine Referenz angibst, beginnt Git bei dieser statt beim aktuellen Branch. Lies den lokalen main und danach die lokale Aufzeichnung namens origin/main:
git log main
git log origin/main
git status
Beide Logs beginnen derzeit mit demselben Commit. git status meldet, dass der lokale main mit origin/main auf dem neuesten Stand ist. Es sind zwei Referenzen, die nach diesem Push gerade übereinstimmen, kein gemeinsam genutzter Zeiger.
Was hat -u dem erfolgreichen ersten Push hinzugefügt?
In diesem einen Befehl sind zwei getrennte Dinge passiert. Es lohnt sich, sie auseinanderzuhalten. Deine Commits wurden in das Bare-Repository kopiert. Außerdem wurde eine Beziehung festgehalten, damit du Remote und Branch nicht jedes Mal erneut nennen musst. Das Erste ist die eigentliche Arbeit. Das Zweite ist die Erleichterung und der Grund, warum von jetzt an git push allein genügt.