Git使い始めのときだったり、Maven Release Pluginでちょっと失敗した場合など、間違ったpushをしてしまうことがあります。
そういう場合にそのpushを消し去って過去に戻る方法のメモです。

どこまで戻すか決める

git logしてコミット履歴を確認

まず git log してコミット履歴を確認します。
以下のような感じのものが出てきます。

$ git log
commit 61ea04eed2b4a4edc265c53827c5b05eb0de64cf
Author: hogehoge <fugafuga@example.com>
Date:   Fri Aug 31 12:06:43 2012 +0900
 
    Update pom.xml
 
commit d7589cfeddb10d36500ea7b9aea45ce470c01e0e
Author: hogehoge <fugafuga@example.com>
Date:   Thu Aug 30 13:44:43 2012 +0900
 
    Update readme.md
 
commit 464afea34504d42c4ea02b770fd425457b5e9b94
Author: hogehoge <fugafuga@example.com>
Date:   Thu Aug 30 13:28:02 2012 +0900
 
    first commit
 

戻りたい時点のcommitのハッシュ値をメモる

戻りたい時点のコミットのハッシュ値をメモります。
例えば上記の例で、一番下のfirst commitに戻りたい場合は、

commit 464afea34504d42c4ea02b770fd425457b5e9b94
Author: hogehoge <fugafuga@example.com>
Date:   Thu Aug 30 13:28:02 2012 +0900
 
    first commit
 

の「464afea34504d42c4ea02b770fd425457b5e9b94」がハッシュ値となります。

git reset —hardする

いよいよ禁断の git reset —hard します。

$ git reset --hard ハッシュ値

上記の例では、
$ git reset --hard 464afea34504d42c4ea02b770fd425457b5e9b94

となります。

戻した結果をpushする

戻した結果をpushします。
-fをつけつつハッシュ値をつけて強制pushします。

$ git push -f origin ハッシュ値:master

上記の例では、
$ git push -f origin 464afea34504d42c4ea02b770fd425457b5e9b94:master

となります。

これで、きれいに過去に戻ります。
ですが、くれぐれもご利用は自分のリポジトリだけで。