Einführung
Fieldnotes veranstaltet kleine Workshops und Gartenspaziergänge. Eine veröffentlichte Aktualisierung hat versehentlich die Anmeldungen für Clay & Coffee pausiert. Eine spätere, gültige Aktualisierung hat Sunset Walk hinzugefügt. Das Team möchte die Anmeldung wiederherstellen und dabei dieses neuere Angebot und alle bestehenden Buchungen erhalten.
Du nutzt zuerst einen funktionierenden Workshop, um eine normale Buchung und die Ticketauslieferung kennenzulernen. Dann untersuchst du den tatsächlichen Git-Verlauf, machst die ältere fehlerhafte Änderung mit einem neuen Korrektur-Commit rückgängig, veröffentlichst ihn und testest eine echte Reservierung. Die gesamte Website zurückzusetzen würde nützliche Arbeit verlieren.
Du solltest grundlegende Terminalnavigation, Commits, Branches und einfache Log-/Diff-Ausgaben verstehen; der vorherige Kurs zum Zusammenführen von Teambeiträgen wird empfohlen. Die vorbereiteten Tabs Workspace und Event Desk sind die einzigen benötigten Zugänge. Dies sind echte Git-Repositories und eine HTTP-Anwendung auf einem einzigen Übungsrechner. Die Website liest in dieser Umgebung direkt den gemeinsamen main; eine gehostete Deployment-Pipeline wird hier nicht behandelt. Alle Identitäten und Veranstaltungen sind fiktiv. Die Dauer von 45 Minuten ist eine Schätzung des Autors.
Den Event Desk ausprobieren und die fehlerhafte Aktualisierung finden
In diesem Schritt erlebst du eine normale Buchung, beobachtest den fehlerhaften Workshop und erkennst, welche Verlaufseinträge den Fehler und die erhaltenswerte spätere Arbeit darstellen.
Öffne den Tab Event Desk. Suche in der Workshop-Liste nach Postcard Studio und klicke auf dessen Link View workshop. Dieser funktionierende Workshop zeigt Save your seat, das Feld Full name und Reserve a place. Gib Alex Morgan oder einen anderen Beispielnamen ein und klicke einmal auf Reserve a place.
Die Bestätigung sollte You're on the list. anzeigen sowie Postcard Studio, Studio Two und EUR 10.00 nennen. Klicke auf Download ticket. Öffne die .txt-Datei über die Downloadliste deines Browsers. Sie muss denselben Workshop, Namen, Treffpunkt und Gesamtbetrag enthalten. Ihre Buchungsreferenz wird für deine tatsächliche Reservierung erzeugt und variiert. Dies ist das normale nutzbare Ergebnis, das auch der betroffene Workshop liefern sollte.
Klicke im Seitenkopf auf All workshops. Öffne Clay & Coffee über dessen Link View workshop. Das erwartete anfängliche Problem ist Registration is paused, ohne Reservierungsformular. Bestehende Buchungen bleiben gültig; entferne sie nicht, um eine Anmeldungseinstellung zu reparieren.
Verwende erneut All workshops im Seitenkopf und öffne Sunset Walk. Das Angebot muss mit 15 Nov 2026, 16:00, East Gate und EUR 6.00 verfügbar bleiben. Die spätere Seite ist wertvolle Arbeit, die erhalten werden soll, und kein Teil des Fehlers.
Wechsle zum Tab Workspace. Beginne im Bearbeitungs-Repository:
cd /home/labex/project/event-desk/editor
cd ändert das Verzeichnis dieses Terminals. Falls du einen Pfad falsch schreibst, gib mit pwd das aktuelle Verzeichnis und mit ls dessen Inhalt aus. Wiederhole dann den vollständigen cd-Befehl oben. Gewöhnliche Navigationsfehler erfordern kein Zurücksetzen der VM.
Lege eine Autorenidentität nur in diesem Repository fest. --local hält die Einstellungen lokal; Anführungszeichen halten einen Namen mit Leerzeichen zusammen. Dies sind fiktive Beispielwerte, und du kannst eigene wählen:
git config --local user.name "Event Editor"
git config --local user.email "events@example.com"
Die Anwendung speichert Buchungen außerhalb des Bearbeitungs-Repositories. Ihre JSON-Datei verwendet Feldnamen in Anführungszeichen, gefolgt von Doppelpunkten und Werten. Namen und Workshop-Kennungen sind Text, während Preise als ganze Centbeträge gespeichert werden. .. bezeichnet das übergeordnete Verzeichnis. Der folgende nur lesende Befehl gibt also die benachbarte Buchungsdatei aus, ohne dein Bearbeitungsverzeichnis zu verlassen:
cat ../bookings.json
Suche die ursprünglichen Datensätze von Casey Lane und Sam Rivera sowie deine neue Reservierung für Postcard Studio. Behalte diese Datensätze unverändert bei. Git wird eine versionierte Veranstaltungseinstellung korrigieren; es wird die Reservierungssammlung nicht zurücksetzen.
Lies den Commit-Verlauf. --no-pager gibt die Ausgabe direkt aus, statt ein Anzeigeprogramm zum Blättern zu öffnen; --oneline zeigt eine kurze Zeile pro Commit; --decorate beschriftet Branch-Zeiger und Tags:
git --no-pager log --oneline --decorate
Der neueste Eintrag ist Add the Sunset Walk event, gefolgt von Pause Clay and Coffee registrations und Open the Fieldnotes event desk. Die genauen Commit-IDs variieren. Der vorbereitete Tag incident-start ist eine feste Markierung für die Version, die du übernommen hast. Anders als main bewegt er sich nicht weiter, wenn du einen neuen Commit erstellst. Behalte diese Markierung unverändert bei.
Lies, was der neueste markierte Commit geändert hat. show zeigt die Nachricht und den Patch eines ausgewählten Commits:
git --no-pager show incident-start
Er fügt events/sunset-walk.json hinzu. Das ist die neue Veranstaltung, die erhalten bleiben soll. Die ältere Pausierung ist die rückgängig zu machende Änderung, nicht diese Ergänzung. Der Prüfpunkt bestätigt deine tatsächliche neue Referenzbuchung und ihr Ticket, statt eine vorhandene Beispielbuchung als dein neues Ergebnis zu werten.
Eine Korrektur hinzufügen und spätere Arbeit erhalten
In diesem Schritt identifizierst du die fehlerhafte Änderung und kehrst nur diese Änderung in einem neuen Commit nach der übernommenen Branch-Spitze um.
Bleibe in Workspace, in /home/labex/project/event-desk/editor. Ein Revisionsausdruck kann einen Vorfahren benennen, ohne ihn auszuchecken oder einen Branch zu verschieben. incident-start~1 bezeichnet einen direkten Vorgänger vor der festen Markierung; incident-start~2 bezeichnet zwei Vorgängerschritte davor. Lies den mittleren Commit:
git --no-pager show incident-start~1
Sein Patch ändert registration_open von true zu false in events/clay-and-coffee.json. Diese boolesche Einstellung erlaubt oder pausiert neue Anmeldungen. capacity ist die positive Platzobergrenze des Workshops; sie sollte ebenfalls nutzbar bleiben. Der unveränderte Wert 1800 von price_cents bedeutet EUR 18.00.
Lies den ursprünglichen Veranstaltungssnapshot. Ein Doppelpunkt verbindet eine Revision und einen Dateipfad. Der folgende Ausdruck wählt also die Datei zwei Vorgängerschritte vor der Markierung aus:
git --no-pager show incident-start~2:events/clay-and-coffee.json
Im Original ist die Anmeldung geöffnet und die Kapazität beträgt 12. Die gesamte Website auf diese ältere Version zurückzusetzen würde auch Sunset Walk entfernen. Ein Revert berechnet stattdessen die Umkehrung der Änderung eines ausgewählten Commits und speichert eine neue Korrektur auf dem aktuellen Branch. Der ursprüngliche fehlerhafte Commit bleibt im Verlauf erhalten, ebenso die späteren nützlichen Commits.
Prüfe vor der Korrektur den Arbeitszustand. --short zeigt eine kompakte Liste geänderter Dateien; das vorbereitete Repository sollte keine Ausgabe liefern:
git status --short
Mache nun den identifizierten fehlerhaften Commit rückgängig. --no-edit übernimmt die von Git erzeugte Korrekturanachricht und verhindert das Öffnen eines Editors. Die feste Markierung hält dieses Ziel auch dann stabil, wenn dein Branch weiterläuft:
git revert --no-edit incident-start~1
Erwarte einen neuen Commit, der mit Revert "Pause Clay and Coffee registrations" beginnt, und eine Änderung an einer Datei. Deine Autorenidentität und Commit-ID können abweichen.
Übe, einen bereits abgeschlossenen Vorgang zu erkennen, indem du denselben Befehl mit der festen Markierung noch einmal ausführst. Diese Wiederholung soll einen Status ungleich null mit nothing to commit, working tree clean zurückgeben. Führe sie einzeln aus und fahre danach fort:
git revert --no-edit incident-start~1
In diesem vorbereiteten Fall einer bereits angewendeten Korrektur gibt es keinen unfertigen Revert aufzulösen. Prüfe Verlauf und Status, statt einen leeren Korrektur-Commit zu erfinden:
git --no-pager log --oneline --decorate
git status --short
Es sollte genau eine neue Korrektur über den ursprünglichen Commits für Sunset Walk, die Pausierung und die Eröffnung geben, ohne Änderungen im Arbeitsbaum. Die Markierung incident-start bezeichnet weiterhin die übernommene Version. So vermeidest du auch, einen beweglichen HEAD mit einer festen Referenz auf den Vorfall zu verwechseln.
Prüfe die genaue Korrektur. diff vergleicht die beiden benannten Snapshots. HEAD ist dein aktuell ausgecheckter Commit; -- trennt die Revisionen vom folgenden Dateipfad:
git --no-pager diff incident-start HEAD -- events/clay-and-coffee.json
Erwarte nur die umgekehrte Änderung von false zu true. Prüfe, dass die neuere Veranstaltung keinen Unterschied zur übernommenen Version aufweist:
git --no-pager diff incident-start HEAD -- events/sunset-walk.json
Für Sunset Walk wird keine Ausgabe erwartet. Du hast eine gezielte lokale Korrektur und dabei spätere Arbeit erhalten.
Wechsle zu Event Desk, klicke im Seitenkopf auf All workshops und öffne Clay & Coffee erneut. Dort steht weiterhin Registration is paused. Das ist zu erwarten: Dein Commit im Bearbeitungs-Repository ist lokal, während diese Website das gemeinsame Repository liest. Im nächsten Schritt veröffentlichst du ihn. Der Prüfpunkt bewertet hier den lokalen Korrektur-Commit und die erhaltenen Dateien.
Die Korrektur veröffentlichen und die reparierte Anmeldung testen
In diesem Schritt lieferst du die Korrektur an den gemeinsamen main aus, erstellst eine echte Buchung im wiederhergestellten Workshop und prüfst, dass die neuere Veranstaltung und die bestehenden Buchungen erhalten bleiben.
Wechsle zu Workspace, weiterhin in /home/labex/project/event-desk/editor. origin ist der vorbereitete Remote-Name für /home/labex/project/event-desk/shared.git, ein lokales Bare-Repository, das den gemeinsamen Verlauf ohne bearbeitbare Arbeitskopie speichert. push origin main sendet deinen lokalen main an dieses Ziel:
git push origin main
Erwarte main -> main ohne Ablehnung. Dein neuer Commit folgt auf die übernommene Branch-Spitze. Daher erhält dieser normale Push jeden veröffentlichten Commit. In der Umgebung arbeitet niemand im Hintergrund mit. Falls beim Experimentieren eine Ablehnung auftritt, untersuche die tatsächlichen Verläufe; ein erzwungenes Ersetzen, das ursprüngliche Arbeit verliert, erfüllt die Aufgabe nicht.
Prüfe die ausgelieferten Zeiger:
git --no-pager log --oneline --decorate
Der lokale main und origin/main bezeichnen jetzt den neuen Korrektur-Commit. Die ursprüngliche Vorfallsmarkierung und alle früheren Nachrichten bleiben darunter erhalten.
Wechsle zu Event Desk. Klicke im Seitenkopf auf All workshops und öffne dann Clay & Coffee. Jetzt werden Save your seat, Full name und Reserve a place angezeigt. Prüfe das unveränderte Datum, den Treffpunkt und den Preis von EUR 18.00, bevor du einen Namen eingibst.

Achte auf den Workshop-Titel und das Formular rechts; auf einem schmalen Bildschirm steht das Formular unter den Veranstaltungsdetails. Die verbleibenden Plätze spiegeln tatsächliche Buchungen wider, daher kann die Anzahl vom Beispiel abweichen.
Gib Jamie Chen oder einen anderen beispielhaften vollständigen Namen ein und klicke einmal auf Reserve a place. Die Bestätigung sollte You're on the list. anzeigen, zusammen mit Clay & Coffee, 14 Nov 2026, 14:00, The Pottery Room, einem Platz und EUR 18.00.

Klicke auf Download ticket, öffne die heruntergeladene .txt-Datei über die Downloadliste deines Browsers und vergleiche Buchungsreferenz, Workshop, Datum, Uhrzeit, Treffpunkt, Name, Plätze und Gesamtbetrag mit der Bestätigung. Die Referenz wird für deine Reservierung erzeugt; du sollst keinen Wert aus einem Screenshot übernehmen.
Verwende All workshops im Seitenkopf, um Sunset Walk erneut zu öffnen. Die vollständige Seite muss weiterhin 15 Nov 2026, 16:00, East Gate und EUR 6.00 anzeigen. Auch Postcard Studio muss im Rahmen seiner tatsächlich verbleibenden Kapazität nutzbar bleiben.
Wechsle zu Workspace und lies die Buchungssammlung erneut:
cat ../bookings.json
Beide ursprünglichen Datensätze und deine frühere Buchung für Postcard Studio bleiben erhalten; die neue Buchung für Clay & Coffee ist hinzugekommen. Du hast die versionierte Veranstaltung korrigiert, ohne Buchungsdaten zurückzusetzen.
Schließe mit der Prüfung des Arbeitszustands ab:
git status --short
Es sollten keine Änderungen an versionierten Dateien übrig bleiben. Unversionierte persönliche Notizen sind erlaubt, falls du welche erstellt hast; nimm keine zusätzlichen versionierten Dateien in die Website auf. Der Prüfpunkt kontrolliert den tatsächlichen Verlauf, die Veröffentlichung im gemeinsamen Repository, vollständige Live-Seiten, erhaltene Datensätze und die echten Ticketinhalte.
Zusammenfassung
Du hast mit einer normalen Buchung das erwartete fachliche Ergebnis kennengelernt, einen Anmeldefehler auf einen älteren Commit zurückgeführt und mit git revert eine gezielte Korrektur hinzugefügt. Die neuere Veranstaltung, der ursprüngliche Verlauf und die bestehenden Buchungen blieben erhalten.
Nach einem normalen Push nahm die gemeinsame Website eine neue Reservierung an und lieferte ein echtes Ticket mit der richtigen Veranstaltung und dem richtigen Preis. Die unabhängige Challenge verwendet eine andere fehlerhafte Einstellung und enthält zwei spätere korrekte Commits. Untersuche deshalb den übernommenen Verlauf, bevor du das Ziel der Korrektur auswählst.



