gitを使っていて、addしてcommitしてpushまでしてしまってから「しまった!」と気付いてcommitを無かったことにしたい場合があると思います。
この場合の対処方法をメモしておきます(要:gitサーバの管理権限)
まず、ローカルリポジトリの内容を取り消します。
$ git reset --hard HEAD^
–hardを用いることで、ローカルの変更内容が元に戻ります。変更内容を戻したくない場合は–softを使用しましょう。
で、この状態でgit logすると履歴が戻っているのが確認できますが、pushしようとすると
$ git push
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'hogehoge.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
と言われてしまい、拒否されます。
このため、一旦サーバの内容を削除しちゃいます(笑)
$ git push origin :master
remote: warning: deleting the current branch To hogehoge.git - [deleted] master
もし、このコマンドに失敗する場合は、gitサーバ上の.gitconfigに次の設定を追加します。
[receive]
denyDeleteCurrent = warn
その後、再度pushします。
$ git push origin master
略
To hogehoge.git * [new branch] master -> master
以上です。
結構、危険なことをやってるので、慎重にやってください。