git reset --hard <SHAsum of your commit>
git push -f
git revert <commit-hash>
git revert 797832c
# This will create three separate revert commits:
git revert a867b4af 25eee4ca 0766c053
# It also takes ranges. This will revert the last two commits:
git revert HEAD~2..HEAD
#Similarly, you can revert a range of commits using commit hashes (non inclusive of first hash):
git revert 0d1d7fc..a867b4a
# Reverting a merge commit
git revert -m 1 <merge_commit_sha>
# To get just one, you could use `rebase -i` to squash them afterwards
# Or, you could do it manually (be sure to do this at top level of the repo)
# get your index and work tree into the desired state, without changing HEAD:
git checkout 0d1d7fc32 .
# Then commit. Be sure and write a good message describing what you just did
git commit
git revert 1af17e
// The '.' is needed to attached HEAD!
$ git checkout <commit_id> .
$ git add .
$ git commit -m "go back to <commit-id>"
$ git push
// checkout source for full details!