gitで間違ってadd&commit&pushまでしてしまった時の対処方法

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

以上です。
結構、危険なことをやってるので、慎重にやってください。

コメントを残す

メールアドレスが公開されることはありません。