Git – den letzten Commit anpassen

Tobias Janssen

Backend Software-Developer und GIT Enthusiast bei traperto GmbH

Jeder der die Versionskontrolle GIT verwendet, kennt die Situation „Misst, mein letzter Commit hat Rechtschreibfehler“ oder „Verdammt, es fehlt eine Datei“.
In diesem Blogpost möchte ich euch ein paar Möglichkeiten präsentieren, mit denen ein Commit nachträglich bearbeitet werden kann.

Die letzte Commit-Nachricht anpassen

In der letzten Commit-Nachricht sind Schreibfehler enthalten oder der Commit könnte besser beschrieben werden?
Mit folgendem Befehl können wir die Nachricht des letzten Commits anpassen:

$git commit --amend -m "neue Nachricht"
Vergessen eine Datei hinzuzufügen? 

Kein Problem, mit folgenden Befehlen wird eine Datei nachträglich dem letzten Commit hinzugefügt:

$git add <file>
$git commit --amend HEAD~1

HEAD beschreibt/zeigt den Commit/Branch auf den aktuell gearbeitet wird. Mehr dazu in diesem Blogpost https://www.traperto.com/git-deep-dive/.
Mit der Tilde (~) kann die Anzahl der letzten Commits angegeben werden. HEAD~1 bedeutet demnach, dass der vorherige Commit bearbeitet werden soll.

Änderungen Rückgängig machen

Um die Änderungen des letzten Commits zurückzusetzen, bietet GIT mehrere Möglichkeiten.
Den letzten Commit zurücksetzen und die Änderung des Commits behalten:

$git reset --soft HEAD~1

Die Änderungen des Commits werden in die staged Area verschoben und könnten zusätzlich angepasst werden.
Den letzten Commit zurücksetzen und die Änderungen verwerfen:

$git reset --hard HEAD~1

Bei dem hard reset ist Obacht geboten. Bei dieser Art und Weise werden die Änderungen zurückgesetzt und komplett verworfen.
Alternativ kann der lokale Branch auf den remote Branch zurückgesetzt werden:

$git reset --hard origin/<branch_name>

Jede nachträgliche Commit Änderungen benötigt bei einem remote Repository ein force push, da die GIT Historie überschrieben wird und die vorherigen Änderungen so nicht mehr nachvollzogen werden können.

Um die Historie zu bewahren und auf Nummer sicher zu gehen, können die Änderungen des letzten Commits in einem neuen Commit zurückgesetzt werden

$git revert HEAD
Den Author / Email Adresse des Commit-Erstellers anpassen
$git commit --amend --author="Author <example@example.com>"