Es gibt viele Möglichkeiten, dies zu tun, zum Beispiel:
Falls du den Commit nicht öffentlich gepusht hast:
git reset HEAD~1 --soft
Das war's, deine Commit-Änderungen werden in deinem Arbeitsverzeichnis sein, während der LETZTE Commit von deinem aktuellen Branch entfernt wird. Siehe git reset man
Falls du öffentlich gepusht hast (auf einem Branch namens 'master'):
git checkout -b MyCommit // speicher deinen Commit in einem separaten Branch, nur für den Fall (damit du ihn nicht aus dem Reflog graben musst, falls du etwas vermasselst :) )
wiederherstellen des Commits normal und pushen
git checkout master
git revert a8172f36 # Hash des Commits, den du löschen möchtest
# dies führt einen neuen Commit ein (sagen wir, sein Hash ist 86b48ba), der die Änderungen entfernt, die im betreffenden Commit eingeführt wurden (aber diese Änderungen sind immer noch in der Historie sichtbar)
git push origin master
jetzt, wenn du diese Änderungen als lokale Änderungen in deinem Arbeitsverzeichnis behalten möchtest ("damit deine lokale Kopie die Änderungen des Commits behält") - einfach den revert Commit mit der Option --no-commit
umkehren:
git revert --no-commit 86b48ba (Hash des Revert-Commits).
Ich habe ein kleines Beispiel erstellt: https://github.com/Isantipov/git-revert/commits/master