Branches · Übung
Zu Main zurückkehren
Der Commit mit den Öffnungszeiten ist auf add-opening-hours sicher aufgehoben. Jetzt möchtest du das Projekt so ansehen, wie main es festhält, ohne die gerade erstellte Arbeit zu löschen oder zu verschieben.
Prüfen, was gespeichert wurde
Die vorherige Lektion hat einen Commit mit Öffnungszeiten auf add-opening-hours hinterlassen, ohne unfertige Bearbeitungen. Führe vor dem Wechsel git status aus. Wenn es eine Änderung meldet, prüfe sie, bevor du weitermachst. Diese Übung erwartet die gespeicherte Datei und den einzelnen Commit aus der vorherigen Lektion. Verwirf eine zusätzliche Bearbeitung mit git restore nur, wenn du entschieden hast, dass du sie nicht behalten möchtest.
In deinen eigenen Projekten gehören nicht committete Änderungen noch zu keinem Branch. Git kann sie beim Wechsel mitnehmen, wenn sie dem Ziel nicht widersprechen. Würde der Wechsel sie überschreiben, verweigert Git ihn und nennt die betroffenen Dateien. Erzwinge den Wechsel nicht: Committe gewünschte Arbeit auf dem Branch, zu dem sie gehört, bevor du es erneut versuchst. Der saubere Ausgangszustand in dieser Übung macht die folgende Dateiänderung eindeutig.
Zu einem vorhandenen Branch wechseln
Vorhin hat git switch -c add-opening-hours einen Branch angelegt und zu ihm gewechselt. Der Branch main existiert bereits. Lass diesmal also -c weg und nenne den Branch, zu dem du wechseln möchtest:
git switch main
Git setzt HEAD auf main und aktualisiert den Arbeitsbaum passend zum Commit, auf den main zeigt. Der Ausgangscommit enthält keine hours.txt, also verschwindet die Datei aus dem Arbeitsbaum. Sie ist nicht verloren: Sie bleibt im Commit erhalten, der über add-opening-hours erreichbar ist.
Der Befehl ls listet die Namen im aktuellen Ordner auf. Prüfe damit den Arbeitsbaum und frage Git dann nach dem aktuellen Branch:
ls
git branch
git status
ls zeigt README.md, aber keine hours.txt. Ein einfaches git branch setzt * neben main, und git status meldet einen sauberen Arbeitsbaum.
Der Branch-Wechsel hat keinen Commit rückgängig gemacht, keinen Ordner kopiert und main nicht vorgeschoben. Er hat geändert, welchem vorhandenen Branch HEAD folgt, und den einen Arbeitsbaum an dessen Commit angepasst.
Add opening hours <- add-opening-hours
|
Clarify the guide title <- main (HEAD), clearer-title
|
Start the neighborhood guide
Wenn du git switch add-opening-hours ausführst, kommt hours.txt zurück, weil Git den Arbeitsbaum wieder an diesen Branch anpasst. Probiere den Hin- und Rückweg gern aus. Beende die Übung nur auf main: Führe vor dem Einreichen noch einmal git switch main aus.
Warum ist hours.txt nach git switch main verschwunden?
Wenn eine Datei beim Wechsel erscheint und verschwindet, ist das beim ersten Mal beunruhigend und danach völlig normal. Ein Wechsel ist weder ein Speichern noch ein Rückgängigmachen. Git stellt deinen Arbeitsbaum passend zu einem anderen Punkt im Verlauf wieder her. Das geht sofort, weil jeder dieser Punkte eine vollständige Momentaufnahme ist, die Git bereits besitzt.
Ein kleiner Aufräumschritt bleibt noch. Das Repository enthält weiterhin einen Branch-Namen, dessen Aufgabe erledigt ist.