Setzen Sie ein geändertes Commit in Git zurück

John Wachira 15 Februar 2024
Setzen Sie ein geändertes Commit in Git zurück

Dieser Artikel beschreibt das Zurücksetzen des Befehls git commit --amend. Wir verwenden diesen Befehl, um Dateien zu einem vorherigen Commit hinzuzufügen, um unser Repository sauber zu halten.

Wie würden wir in einem Szenario, in dem wir den Befehl versehentlich verwendet haben, die Effekte rückgängig machen?

Setzen Sie ein geändertes Commit in Git zurück

Schauen wir uns das Beispiel unten an.

Im folgenden Beispiel haben wir den Befehl git commit --amend verwendet, um Dateiänderungen zum letzten Commit in unserem Zweig master hinzuzufügen.

git commit –amend

Wir möchten die Änderung rückgängig machen und die Datei separat übergeben. Wie gehen wir vor?

Wir müssen unseren aktuellen HEAD verschieben, um auf den alten Commit zu zeigen, bevor HEAD verschoben wurde. Wir können dies tun, indem wir den folgenden Befehl ausführen.

$ git reset --soft HEAD@{1}

Beachten Sie, dass wir HEAD@{1} anstelle von HEAD~1 verwendet haben. Letzteres führt uns zum übergeordneten Knoten des aktuellen HEAD, was wir nicht wünschen.

Dies sollte den alten Commit so wiederherstellen, wie er vor der Änderung war. Wir sollten jetzt unsere modifizierte Datei im Index haben.

Lassen Sie uns unseren Fall mit dem Befehl git status bestätigen.

git status

Alternativ können Sie den Befehl git reflog ausführen, um den alten Commit-Hash zu erhalten, bevor wir ihn ändern. In beiden Fällen erreichen sowohl HEAD@{1} als auch der alte Commit-Hash in Kombination mit dem Befehl git reset --soft dasselbe Ziel.

Wir können die Datei jetzt auf herkömmliche Weise übergeben.

$ git commit -m "Modify run.py"

Wir haben jetzt einen separaten Commit für unsere modifizierte Datei.

Kurz gesagt, wir können die Auswirkungen des Befehls git commit --amend mit dem Befehl git reset --soft rückgängig machen. Denken Sie daran, dass sich HEAD@{1} von HEAD~1 unterscheidet.

John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Verwandter Artikel - Git Commit