Hay muchas formas de hacerlo, por ejemplo:
en caso de que aún no haya presionado el compromiso públicamente:
git reset HEAD~1 --soft
Eso es todo, sus cambios de confirmación estarán en su directorio de trabajo, mientras que la ÚLTIMA confirmación se eliminará de su rama actual. Ver git reset man
En caso de que haya presionado públicamente (en una rama llamada 'maestro'):
git checkout -b MyCommit //save your commit in a separate branch just in case (so you don't have to dig it from reflog in case you screw up :) )
revertir comprometer normalmente y presionar
git checkout master
git revert a8172f36 #hash of the commit you want to destroy
# this introduces a new commit (say, it's hash is 86b48ba) which removes changes, introduced in the commit in question (but those changes are still visible in the history)
git push origin master
ahora, si desea tener esos cambios a medida que cambia localmente en su copia de trabajo ("para que su copia local mantenga los cambios realizados en esa confirmación"), simplemente revierta la --no-commit
opción revertir confirmación con la opción:
git revert --no-commit 86b48ba (hash of the revert commit).
He creado un pequeño ejemplo: https://github.com/Isantipov/git-revert/commits/master