Есть много способов сделать это, например:
в случае, если у вас есть не протолкнул совершить еще публично:
git reset HEAD~1 --soft
Вот именно, ваши совершающие изменения будут быть в вашем рабочем каталоге, тогда как LAST commit будет удален из вашей текущей ветви. См git reset man
В случае, если вы сделал толчок публично (на ветке называется 'мастер'):
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 :))
Revert фиксации обычно и нажмите
git checkout master
git revert a8172f36 #hash of the commit you want to destroy
# this intorduces a new coomit (say, it's hash is 86b48ba) which removes changes, introduced in the coomit 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
Возможный дубликат [Можете ли вы объяснить, что означает «сброс git» на простом английском?] (Http://stackoverflow.com/questions/2530060/can-you-explain-what-git-reset-does-in- plain-english) – CodeFanatic
'git reset --soft' и' git reset --mixed' оба делают это (немного по-другому), см. [git-reset] (https://www.kernel.org/pub/software/ scm/git/docs/git-reset.html) – torek