Verlauf umschreiben

GitGitBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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 Rebase (interactive Rebase), einzusetzen, um eine chaotische Timeline in eine klare, prägnante Historie zu verwandeln.

Stellen Sie sich vor, Sie sind ein Historiker mit der Fähigkeit, die Vergangenheit neu zu schreiben. Ihre Aufgabe ist es, eine Reihe von verstreuten Ereignissen zu nehmen und sie in eine kohärente Erzählung zu reorganisieren. Genau das werden Sie mit der interaktiven Rebase-Funktion von Git tun. Sie werden verwandte Commits kombinieren, unnötige entfernen und Commit-Nachrichten umschreiben, um eine klarere Geschichte der Entwicklung Ihres Projekts zu erzählen.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/rebase("Reapply Commits") subgraph Lab Skills git/commit -.-> lab-387746{{"Verlauf umschreiben"}} git/log -.-> lab-387746{{"Verlauf umschreiben"}} git/rebase -.-> lab-387746{{"Verlauf umschreiben"}} end

Aufräumen der Timeline (Zeitachse)

Aufgaben

Das Challenge-Repository wurde in ~/project/time-travel-git eingerichtet. Führen Sie den folgenden Befehl aus, um die anfängliche Commit-Historie anzuzeigen:

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

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

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 die Formulierung 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 die folgenden Anforderungen:

  • Alle Operationen müssen im Verzeichnis ~/project/time-travel-git durchgeführt werden.
  • Sie müssen den Befehl git rebase -i (interaktives Rebase) verwenden, um die Commit-Historie aufzuräumen.
  • Ihre endgültige Historie sollte genau 3 Commits haben (anstelle der ursprünglichen 4).
  • Der Inhalt der Datei sollte unverändert bleiben - Sie ändern nur die Commit-Historie.
  • Wenn die Challenge abgeschlossen ist, sollte die Ausführung von git log --oneline 3 Commits mit den korrekten Nachrichten anzeigen.

Hinweise

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

  1. Interaktives Rebase (interactive rebase) ermöglicht es Ihnen, Commits in Ihrer Historie zu manipulieren. Das grundlegende Befehlsformat ist:

    git rebase -i <commit>

    wobei <commit> der Commit vor dem ersten ist, den Sie ändern möchten. Um ab dem allerersten Commit zu ändern, können Sie Folgendes verwenden:

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

    • pick - Verwenden Sie den Commit unverändert
    • reword oder r - Verwenden Sie den Commit, ändern Sie aber seine Nachricht
    • squash oder s - Kombinieren Sie diesen Commit mit dem vorherigen
    • fixup oder f - Wie Squash (squash), aber verwerfen Sie die Nachricht dieses Commits
  3. Um Commits zu kombinieren, sollten Sie entweder squash oder fixup für den zweiten Commit verwenden.

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

  5. Nachdem Sie Ihren Rebase-Plan eingerichtet haben, speichern und schließen Sie den Editor. Git führt Sie durch den Rest des Prozesses und öffnet bei Bedarf neue Editorfenster zum Bearbeiten von Commit-Nachrichten.

  6. Wenn Sie während des Rebase einen Fehler machen, können Sie ihn jederzeit mit:

    git rebase --abort

    abbrechen und von vorne beginnen.

Beispiel

Nach Abschluss der Challenge sollte Ihr git log --oneline ähnlich wie folgt aussehen (mit unterschiedlichen Commit-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 sich auf eine zeitbiegende Reise durch die Git-Historie begeben. Sie haben die Kunst des interaktiven Rebase (interactive rebasing) gemeistert, ein mächtiges Werkzeug, mit dem Sie die Vergangenheit umgestalten und eine sauberere, logischere Commit-Historie erstellen können.

Durch das Kombinieren von Commits, das Umformulieren 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 die Aufrechterhaltung einer sauberen und verständlichen Historie die Zusammenarbeit und das Projektmanagement erheblich verbessern kann.

Denken Sie daran: Mit großer Macht geht große Verantwortung einher. Das Umschreiben der Historie kann zwar für lokale Branches oder persönliche Projekte nützlich sein, sollte aber in gemeinsam genutzten Branches mit Vorsicht angewendet werden. Kommunizieren Sie immer mit Ihrem Team, bevor Sie gemeinsam genutzte Historien ändern.

Setzen Sie Ihre Git-Abenteuer fort und verfeinern Sie diese Fähigkeiten weiter. Die Fähigkeit, die Historie zu manipulieren, dient nicht nur dem Aufräumen, sondern auch dem Erstellen einer klaren Geschichte der Entwicklung Ihres Projekts. Mögen Ihre zukünftigen Git-Historien sauber, Ihre Merges konfliktfrei und Ihre Commits immer aussagekräftig sein!