Zum Inhalt springen

Einführung

Git verfügt über verschiedene Mechanismen zum Überschreiben der Historie, darunter die Befehle git commit --amend, git rebase und git reflog. Unser Tutorial hilft Ihnen, die Funktionen dieser Befehle und ihre Besonderheiten besser zu verstehen.

Ändern des letzten Commits mit git commit --amend

Oft vergisst man, den Commit zu formatieren, Dateien zu staged oder macht einen Fehler in der Commit-Nachricht. Hier kommt git commit --amend zur Hilfe. Die Ausführung dieses Befehls hilft Ihnen, solche kleinen Fehler zu korrigieren. Im Allgemeinen wird dieser Befehl verwendet, um den letzten Commit zu ändern. Führen Sie den folgenden Befehl aus, um staged Änderungen mit dem vorherigen Commit zu kombinieren:

bash
git commit --amend

Es ist wichtig zu beachten, dass Sie Commits, an denen andere Benutzer arbeiten, nicht ändern sollten, um Kollaborationsprobleme zu vermeiden.

Git reflog-Befehl

Die „Reflogs“ (Reference Logs) dienen zur Aufzeichnung von Updates, die am Kopf von Branches vorgenommen werden. Mit dem Befehl git reflog können Sie zu allen Commits zurückkehren, einschließlich derer, die von keinem Branch referenziert wurden. Führen Sie den folgenden Befehl aus, um das Protokoll anzuzeigen:

bash
git reflog

Der Befehl git reflog verfügt über eigene Unterbefehle, darunter git reflog show, git reflog expire und git reflog delete.

Git rebase

Der Befehl git rebase wird verwendet, um eine Reihe von Commits auf einen völlig neuen Basis-Commit zu verschieben oder zu kombinieren. Der wichtigste Vorteil dieses Befehls ist eine klare Historie, die für eine effektive Arbeit mit Git wichtig ist. Der Befehl git rebase verfügt über zwei Modi: den Standard- und den interaktiven Modus. Im Standardmodus können Sie git rebase verwenden, um Commits aus dem aktuellen Arbeits-Branch auf den übergebenen Branch-Kopf anzuwenden. Mit Hilfe des interaktiven Modus können Sie die Projekt-Historie sauber halten. Um den interaktiven Modus auszuführen, fügen Sie die Option -i zu git rebase hinzu:

bash
git rebase -i <base-branch>

Mehrere Nachrichten

Jeder Git-Commit verfügt über eine Protokollnachricht, die erklärt, was im Commit passiert ist. Während eines interaktiven Rebases können Sie die folgenden Befehle verwenden, um Commit-Nachrichten zu bearbeiten:

  • Verwenden Sie den Befehl r (reword), um die Rebase-Wiedergabe anzuhalten und die einzelne Commit-Nachricht umzuschreiben.
  • Der Befehl s (squash) hält alle mit s markierten Commits an, und Sie werden aufgefordert, die einzelnen Commit-Nachrichten zu einer kombinierten Nachricht zu bearbeiten.
  • Der Befehl f (fixup) ist ähnlich wie squash. Der Unterschied besteht darin, dass er die Rebase-Wiedergabe nicht anhält, um einen Editor zum Kombinieren von Commit-Nachrichten zu öffnen.

Commits zusammenfassen für eine saubere Historie

Der Squash-Befehl gibt die Commits an, die Sie mit den vorherigen zusammenführen möchten. Git öffnet den Texteditor und fordert Sie auf, die spezifischen Commit-Nachrichten zu kombinieren. Die folgende Infografik zeigt den Prozess perfekt.

intro

Die Commits, die mit dem Befehl git rebase geändert wurden, haben andere IDs als die ursprünglichen. Wenn die vorherigen Commits überschrieben werden, erhalten die Commits, die mit pick markiert sind, eine völlig neue ID.

Praxis

Welche der folgenden Aussagen sind bezüglich der Mechanismen zum Überschreiben der Historie in Git wahr?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.