#えむけーろぐ

間違った事を書いていたらやさしく教えてください

GitHub上でsquashできるやつがべんり

10秒でわかるまとめ




今年は技術ネタをどんどん書いていきたいのでこういう話を書きます。なにかおかしなことを書いていたら教えて下さい……。

チームで開発していると、feature/email-notifierとか、fix-hogehoge-problemみたいな感じでブランチ切って、PR送って、細かくコミット、pushして、開発終わったらレビューしてもらってOKだったらマージしてもらって……という事をすると思う。

僕はGit物心がついた時から「コミットの粒度は細かく」って言われてたので、それに従っていた。しかしチームで開発していると、「マージした時に大量のコミットがmasterブランチに押し寄せてきてつらい」という問題が発生していた。masterブランチの中では、"Add なんとか gem"とか"Refactor なんちゃら method"とか、そういう作業途中の細かいコミットはどうでもよくて、ただ"Add Email Notifier"というコミットだけが残っていて、その中にEmail Notifierに関するすべての変更が収まっていて欲しかったのだ。

そんな中、前にいたチームの先輩であるべーたさんが教えてくれたのが、squashというテクニックでした。git rebase -i して、云々……。(詳しくは rebase -i でコミットをまとめる - Qiita を)

ただ、これだとマージ後のmasterのコミットログがキレイになるというのは満たせても、自分だけの作業ブランチとはいえforce pushしなきゃいけないし、作業ブランチのコミットログも全部消えちゃうしなぁ……とか思ってた。

git merge --squash というのですべて解決するっぽいけど、せっかくGitHub使ってるのにマージ担当者が手元でそれやるんかい、という気持ちにもなってた。

すると、今月の頭くらいにGitHubからこんな話が出てきました。github.com

これめっちゃ便利でした。

  • 細かいコミットがちゃんと作業ブランチ(というかPRのページ)に残る
  • masterブランチにはひとつのまとまったコミットとしてマージされる

という二つの条件をカンタンに満たすことができる。つまり、git merge --squashをブラウザ上でできるってことなのかな?めっちゃ便利なので使っていきたいと思う。