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.
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.
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 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