Die Geschichte umschreiben

GitBeginner
Jetzt üben

Einführung

Willkommen, zeitreisender Git-Entdecker! Sie wurden mit einer wichtigen Mission betraut: Die unordentliche Commit-Historie eines streng geheimen Projekts aufzuräumen. Ihr Ziel ist es, Ihre neu erworbenen Git-Fähigkeiten – insbesondere die Kunst des interaktiven Rebasings – einzusetzen, um einen chaotischen Zeitstrahl in eine klare und prägnante Historie zu verwandeln.

Stellen Sie sich vor, Sie wären ein Historiker mit der Fähigkeit, die Vergangenheit umzuschreiben. Ihre Aufgabe ist es, eine Reihe verstreuter Ereignisse zu nehmen und sie in eine kohärente Erzählung umzuorganisieren. Genau das werden Sie mit der Interactive-Rebase-Funktion von Git tun. Sie werden zusammengehörige Commits kombinieren, unnötige Einträge entfernen und Commit-Nachrichten umschreiben, um die Entwicklungsgeschichte Ihres Projekts verständlicher zu gestalten.

Sind Sie bereit, in den Zeitstrom einzutauchen und mit einer polierten Git-Historie wieder aufzutauchen? Beginnen wir Ihr temporales Abenteuer!

Den Zeitstrahl bereinigen

Aufgaben

Das Challenge-Repository wurde im Verzeichnis ~/project/time-travel-git vorbereitet. Führen Sie den folgenden Befehl aus, um die ursprüngliche Commit-Historie anzuzeigen:

cd ~/project/time-travel-git
git log --oneline

Sie sollten die folgenden 4 Commits sehen (Ihre Commit-Hashes werden abweichen):

886c6ad (HEAD -> master) Add project description
3a87b84 Add project codename
6b4cbb9 Fix typo in project name
0d71e5e Start secret project

Ihre Mission umfasst die folgenden Aufgaben:

  1. Kombinieren Sie die beiden ältesten Commits ("Start secret project" und "Fix typo in project name") zu einem einzigen Commit mit der Nachricht "Initialize secret project".
  2. Ändern Sie den Text des Commits "Add project codename" in "Add project codename: Chronos".
  3. Behalten Sie den neuesten Commit ("Add project description") unverändert bei.

Anforderungen

Um diese Mission erfolgreich abzuschließen, halten Sie sich an folgende Vorgaben:

  • Alle Operationen müssen im Verzeichnis ~/project/time-travel-git durchgeführt werden.
  • Sie müssen den Befehl git rebase -i (Interactive Rebase) verwenden, um die Historie zu bereinigen.
  • Ihre finale Historie sollte exakt 3 Commits enthalten (statt der ursprünglichen 4).
  • Der Inhalt der Dateien darf sich nicht ändern – Sie modifizieren lediglich die Commit-Historie.
  • Nach Abschluss der Challenge sollte der Befehl git log --oneline 3 Commits mit den korrekten Nachrichten anzeigen.

Hinweise

Hier sind einige hilfreiche Tipps, die Sie durch die Challenge führen:

  1. Interactive Rebase ermöglicht es Ihnen, Commits in Ihrer Historie zu manipulieren. Das grundlegende Befehlsformat lautet:

    git rebase -i <commit>

    Dabei ist <commit> der Commit direkt vor dem ersten, den Sie ändern möchten. Um ab dem allerersten Commit zu bearbeiten, können Sie diesen Befehl nutzen:

    git rebase -i --root
  2. Im Interactive-Rebase-Bildschirm sehen Sie eine Liste von Commits mit entsprechenden Aktionen. Die gängigsten Aktionen sind:

    • pick – den Commit unverändert übernehmen
    • reword oder r – den Commit übernehmen, aber die Nachricht ändern
    • squash oder s – diesen Commit mit dem vorherigen zusammenführen
    • fixup oder f – wie Squash, aber die Nachricht dieses Commits verwerfen
  3. Um Commits zu kombinieren, bietet es sich an, entweder squash oder fixup für den zweiten Commit zu verwenden.

  4. Um eine Commit-Nachricht zu ändern, nutzen Sie die Aktion reword.

  5. Nachdem Sie Ihren Rebase-Plan erstellt haben, speichern und schließen Sie den Editor. Git wird Sie durch den restlichen Prozess führen und bei Bedarf neue Editor-Fenster öffnen, um Commit-Nachrichten zu bearbeiten.

  6. Falls Ihnen während des Rebases ein Fehler unterläuft, können Sie den Vorgang jederzeit abbrechen mit:

    git rebase --abort

    und von vorne beginnen.

Beispiel

Nach Abschluss der Challenge sollte Ihr git log --oneline etwa so aussehen (mit anderen Hashes):

abc1234 Add project description
def5678 Add project codename: Chronos
ghi9101 Initialize secret project
✨ Lösung prüfen und üben

Zusammenfassung

In dieser Challenge haben Sie eine zeitreisende Reise durch die Git-Historie unternommen. Sie haben die Kunst des interaktiven Rebasings gemeistert – ein mächtiges Werkzeug, das es Ihnen ermöglicht, die Vergangenheit neu zu gestalten und eine sauberere, logischere Commit-Historie zu erstellen.

Durch das Kombinieren von Commits, das Umschreiben von Nachrichten und das Reorganisieren von Änderungen haben Sie eine unordentliche Abfolge von Ereignissen in eine kohärente Erzählung verwandelt. Diese Fähigkeit ist in realen Projekten von unschätzbarem Wert, da eine saubere und verständliche Historie die Zusammenarbeit und das Projektmanagement erheblich verbessert.

Denken Sie daran: Aus großer Macht folgt große Verantwortung. Während das Umschreiben der Historie für lokale Branches oder persönliche Projekte nützlich ist, sollte es auf geteilten (Shared) Branches nur mit großer Vorsicht angewendet werden. Kommunizieren Sie immer mit Ihrem Team, bevor Sie eine bereits veröffentlichte Historie ändern.

Verfeinern Sie diese Fähigkeiten auf Ihren weiteren Git-Abenteuern. Die Manipulation der Historie dient nicht nur dem Aufräumen – es geht darum, die Geschichte der Entwicklung Ihres Projekts präzise zu erzählen. Mögen Ihre zukünftigen Git-Historien sauber, Ihre Merges konfliktfrei und Ihre Commits stets aussagekräftig sein!