There is a nice solution here.
To delete the last (top) commit you can do
git push [remote] +[bad_commit]^:[branch]
where [bad_commit] is the commit that [branch] currently points to, or if the [branch] is checked out locally, you can also do
git reset HEAD^ --hard
git push [remote] -f