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:
- 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".
- Ändern Sie den Text des Commits "Add project codename" in "Add project codename: Chronos".
- 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:
-
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
-
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
-
Um Commits zu kombinieren, bietet es sich an, entweder squash oder fixup für den zweiten Commit zu verwenden.
-
Um eine Commit-Nachricht zu ändern, nutzen Sie die Aktion reword.
-
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.
-
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