Man committet und merkt danach, dass eine Datei im Commit gelandet ist, die dort nichts zu suchen hat. Die Änderung selbst will man aber behalten.
How To
Die Datei aus dem Commit-Inhalt lösen, ihren aktuellen Inhalt aber behalten:
| |
git restore --source=HEAD~1 --staged setzt die Datei im Index auf den Stand vor dem Commit
zurück. Das Arbeitsverzeichnis bleibt dabei unangetastet. Der Inhalt der Datei geht also nicht
verloren. Das anschließende git commit --amend --no-edit schreibt den Commit ohne die Datei neu,
die Commit-Message bleibt unverändert.
Ergebnis
Der bisherige Commit wird durch einen neuen Commit ohne die README ersetzt. Die Datei
taucht danach wieder als unstaged Änderung in git status auf.
Wichtig: --amend erzeugt einen neuen Commit-Hash. Wenn der alte Commit bereits gepusht wurde,
braucht es einen Force-Push.
Verifikation
| |
git show --stat HEAD zeigt, welche Dateien tatsächlich im Commit stecken — die entfernte Datei
darf hier nicht mehr auftauchen. git status -s zeigt sie dagegen wieder als Änderung im
Arbeitsverzeichnis.