Есть много способов сделать это, например:
если вы еще не опубликовали коммит публично:
git reset HEAD~1 --soft
Вот и все, изменения вашего коммита будут в вашем рабочем каталоге, тогда как коммит LAST будет удален из вашей текущей ветки. Смотри git reset man
В случае, если вы сделали публичный пуш (в ветке с именем '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 :) )
вернуть коммит нормально и нажать
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
Теперь, если вы хотите, чтобы эти изменения были локальными изменениями в вашей рабочей копии («чтобы ваша локальная копия сохранила изменения, сделанные в этом коммите») - просто отмените коммит с --no-commitопцией:
git revert --no-commit 86b48ba (hash of the revert commit).
Я создал небольшой пример: https://github.com/Isantipov/git-revert/commits/master