LoginSignup
3
4

More than 5 years have passed since last update.

Gitのコミットを取り消したい時あれこれ

Last updated at Posted at 2017-03-05

直前の複数のコミットをなかったことにしたい場合

気前よくコミットしまくったけど、一日たって冷静に考えるとかなりアレな感じだったりすることってありますよね。そんな時はこれ。

リセットボタンをぽちっと押す

無かったことにしたいコミットのあるブランチに飛んでresetする。
ただし他人がcloneしてたらその人がpushした時に元に戻してしまうので意味がない。
その時はgit revertで恥をさらし続けるか、cloneした人を全員探し出すしかない。

以下はdevelopブランチのParaphrase readmeFixed 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プロジェクトをリリースするとか、そういうダサい過去は私くらいしかいないでしょうけど・・・。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4