Existem várias maneiras de fazer isso, por exemplo:
caso você não tenha enviado o commit publicamente ainda:
git reset HEAD~1 --soft
É isso aí, suas alterações de confirmação estarão no seu diretório de trabalho, enquanto que a ÚLTIMA confirmação será removida do seu ramo atual. Veja git reset man
Caso você tenha pressionado publicamente (em um ramo chamado 'master'):
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 :) )
reverter confirmar normalmente e empurre
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
agora, se você deseja fazer essas alterações conforme as alterações locais em sua cópia de trabalho ("para que sua cópia local mantenha as alterações feitas nessa confirmação") - basta reverter a confirmação de reversão com a --no-commitopção:
git revert --no-commit 86b48ba (hash of the revert commit).
Criei um pequeno exemplo: https://github.com/Isantipov/git-revert/commits/master