Wie kann ich den letzten Git Commit rückgängig machen und die Änderungen behalten?

Melden
  1. Einleitung zum Rückgängigmachen von Commits in Git
  2. Der Unterschied zwischen reset und revert in diesem Kontext
  3. Wie mache ich den letzten Commit rückgängig und behalte die Änderungen?
  4. Zusammenfassung

Einleitung zum Rückgängigmachen von Commits in Git

Git ist ein weit verbreitetes Versionsverwaltungssystem, das es ermöglicht, den Verlauf von Änderungen an Dateien nachzuvollziehen und bei Bedarf zurückzugehen. Oft kommt es vor, dass man versehentlich einen Commit gemacht hat oder feststellt, dass der letzte Commit noch nicht fertig ist. In solchen Fällen möchte man den letzten Commit rückgängig machen, aber die vorgenommenen Änderungen im Arbeitsverzeichnis erhalten, um weiter daran arbeiten zu können. Das ist eine häufige Anforderung, die Git mit einfachen Befehlen unterstützt.

Der Unterschied zwischen reset und revert in diesem Kontext

Beim Rückgängigmachen eines Commits gibt es grundsätzlich zwei verschiedene Wege: reset und revert. Der Befehl git revert erzeugt einen neuen Commit, der die Änderungen eines vorherigen Commits umkehrt. Dies ist nützlich, wenn Sie einen öffentlichen Commit rückgängig machen möchten, ohne die Historie zu verändern.

Für den Fall, dass man den letzten Commit einfach komplett loswerden möchte, ohne einen neuen Commit anzulegen, ist jedoch git reset der richtige Befehl. Hier gibt es verschiedene Modi, die bestimmen, was mit den Änderungen geschieht.

Wie mache ich den letzten Commit rückgängig und behalte die Änderungen?

Um den letzten Commit zu löschen und gleichzeitig die Änderungen im Arbeitsverzeichnis zu behalten, verwendet man den Befehl:

git reset --soft HEAD~1

Dieser Befehl versetzt den aktuellen Branchzeiger (HEAD) eine Commit-Ebene zurück, sodass der letzte Commit entfernt wird, die Änderungen aber in der Staging-Area (Index) bleiben. Das bedeutet, dass die Dateien nach dem Reset so markiert sind, als wären sie bereits für einen neuen Commit vorgemerkt.

Alternativ, wenn man die Änderungen zwar behalten möchte, diese aber weder im Index stehen sollen, noch im Commit, kann man git reset --mixed HEAD~1 verwenden. Standardmäßig ist --mixed auch die Voreinstellung von git reset. Dadurch bleiben die Änderungen in der Arbeitskopie, sind aber nicht mehr im Staging-Bereich und können nochmal angepasst oder selektiert werden.

Zusammenfassung

Der gebräuchlichste Weg, um den letzten Commit rückgängig zu machen und gleichzeitig die Änderungen zu behalten, ist die Verwendung von git reset --soft HEAD~1. Falls Sie die Änderungen lieber aus dem Staging-Bereich entfernen, aber dennoch behalten wollen, eignet sich git reset HEAD~1 (bzw. git reset --mixed HEAD~1). Auf diese Weise können Sie flexibel weiterarbeiten, ohne Ihre Änderungen zu verlieren.

0

Kommentare