10秒でわかるまとめ
GitHub上でsquashできるやつ使ってみたけどいい感じであった。https://t.co/QYu4TbbETv
— mktakuya (@mktakuya) 2016年4月5日
GitHubのSquash and merge(っていう機能名なのかはわからんけど)最高だな。コマンドラインでやるのめんどくさかったけどWeb上でポチポチだとメッチャ楽。
— mktakuya (@mktakuya) 2016年4月17日
*
今年は技術ネタをどんどん書いていきたいのでこういう話を書きます。なにかおかしなことを書いていたら教えて下さい……。
チームで開発していると、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をブラウザ上でできるってことなのかな?めっちゃ便利なので使っていきたいと思う。