主に技術的なことを書くブログ

浅めにマークアップ&フロントエンドの技術的なことをメモしていましたが、ざっくばらんに書いています。

リモートにプッシュしたらもう消せないので、プッシュ前にgit rebaseで整えておく

ローカルでこまめにコミットしまくっていて、作業が一段落したからといってそのままリモートにプッシュすると、そのローカルでこまめにしていたコミットログがそのままリモートにもプッシュされて、メモ的なコメントとか書いてあるとけっこう恥ずかしいことになるということが判明しました。

そして、一度リモートにプッシュしてしまったら、後からいくら書き換えたところで恥の上塗りになるだけで、基本的にはコミットログを消すことはできません。自分の至らなさだったと次に活かしていくしかないです。

今後のフローとして

みんなが使うリモートにはなるべくスマートにプッシュしたいので、ローカルでのコミットはある程度まとめておいて、すっきりした状態に整理してからプッシュすること。

そんなときに便利なのが、git rebaseです。

git rebase -i コミットID

とコマンドをうつと、

pick コミットID
pick コミットID
pick コミットID

といったリストが出てくるので、「pick」の部分を以下のコマンドに書き換えることでそれぞれのコマンドが使えます。

  • pick(コミットを採用)
  • reword(コミットを採用するが、コミットメッセージを変更)
  • edit(コミットを採用するが、ファイルを修正する)
  • squash(一個前のコミットと合体させる)
  • fixup(コミットメッセージを変更しない点以外、squashと同じ)
  • exec(shellでコマンドを実行する)
    引用元:"初心者でも分かる!git rebaseの使い方を解説します | 株式会社LIG

その中でも、ごちゃついたコミットログをすっきりした状態に整理するのにうってつけなのが、squashかfixupかと思います。

似たようなコミットはなるべくまとめてしまって、リモートへのプッシュは彼女の両親に初めて挨拶するような気持ちでできるとよいですね。

参考:5. rebase -i でコミットをまとめる【チュートリアル3 コミットを書き換えよう!】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ