Testen mit synchronisierten Branches
In den vorherigen Schritten haben wir gesehen, was passiert, wenn unser lokaler Branch weiter als der Remote-Tracking-Branch ist. Jetzt wollen wir sehen, was git status
und git log @{u}..HEAD
anzeigen, wenn unser lokaler Branch mit dem Remote-Tracking-Branch synchronisiert ist.
Da wir in dieser Lab-Umgebung kein echtes Remote-Repository haben, können wir die Synchronisierung simulieren, indem wir den Commit entfernen, den wir gerade gemacht haben. In einem realen Szenario würde die Synchronisierung bedeuten, dass Sie Ihre lokalen Commits in das Remote-Repository gepusht haben.
Wir können git reset
verwenden, um unseren lokalen Branch-Zeiger auf den vorherigen Commit zurückzubewegen. Seien Sie vorsichtig mit git reset
in realen Projekten, da es Änderungen verwerfen kann! Für dieses Lab ist es sicher, da wir nur einen Zustand simulieren.
Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project/my-time-machine
befinden:
cd ~/project/my-time-machine
Jetzt setzen wir unseren Branch auf den Commit vor dem letzten zurück. Wir können HEAD~1
verwenden, um auf den Commit vor dem aktuellen HEAD
zu verweisen.
git reset --hard HEAD~1
Sie sollten eine Ausgabe ähnlich dieser sehen, die darauf hinweist, dass der HEAD zurückbewegt wurde und das Arbeitsverzeichnis aktualisiert wurde:
HEAD is now at a1b2c3d Send a message to the future
(Hinweis: Der Commit-Hash wird mit dem Hash Ihres ersten Commits übereinstimmen.)
Nachdem wir unseren lokalen Branch auf den Zustand des ersten Commits zurückgesetzt haben, lassen wir uns erneut den Status anzeigen:
git status
Diesmal sollte die Ausgabe anzeigen, dass Ihr Branch mit dem Remote-Tracking-Branch aktuell ist:
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
Die Nachricht Your branch is up to date with 'origin/master'.
sagt uns, dass unser lokaler master
-Branch mit dem Remote-Tracking-Branch synchronisiert ist.
Schließlich verwenden wir erneut git log @{u}..HEAD
, um zu sehen, ob es irgendwelche "Ahead"-Commits gibt:
git log @{u}..HEAD
Dieser Befehl sollte keine Ausgabe liefern, da es keine Commits auf unserem lokalen Branch (HEAD
) gibt, die nicht auch auf dem Upstream-Branch (@{u}
) sind.
Dies bestätigt, dass unser lokaler Branch jetzt mit dem Remote-Tracking-Branch synchronisiert ist. Das Verständnis der Ausgabe von git status
und die Verwendung von git log @{u}..HEAD
sind essentielle Fähigkeiten für die Verwaltung Ihres Git-Workflows und die effektive Zusammenarbeit.