直前の複数のコミットをなかったことにしたい場合
気前よくコミットしまくったけど、一日たって冷静に考えるとかなりアレな感じだったりすることってありますよね。そんな時はこれ。
リセットボタンをぽちっと押す
無かったことにしたいコミットのあるブランチに飛んでresetする。
ただし他人がcloneしてたらその人がpushした時に元に戻してしまうので意味がない。
その時はgit revert
で恥をさらし続けるか、cloneした人を全員探し出すしかない。
以下はdevelop
ブランチのParaphrase readme
とFixed ToC link
を無かったことにしたい例
$ git checkout develop
$ git log --oneline
4e3e94b Paraphrase readme
2d9d50a Fixed ToC link
59ac102 revert local.go
7f0002e Update README.md
(略)
$ git reset --hard 59ac102
$ git push -f
タグを消す
上記リセットしてもタグを打ってしまうと結局コミットは残り続ける。reset
した後にタグを消すことを忘れないのが、真のバックラー。
$ git tag -d v0.0.2
$ git push origin :refs/tags/v0.0.2
直前のコミットをなかったことにしたい場合
こちらはイケてなかった場所を修正してcommitの時に--amendオプションをつけるだけ。
コミットしたら素早くpushしよう。
$ git commit --amend
$ git push
最後に
Githubでコントリビューターが自分だけだと上記コマンドだけで黒歴史を消すことができます。
コンパイル通らないGoプロジェクトをリリースするとか、そういうダサい過去は私くらいしかいないでしょうけど・・・。