こんにちはAKIです。
私はSubversionをずっと使っていましたが最近はgitを使用している現場やプロジェクトの方が多くなってきましたよね。
自分はgithubから入りましたが、実際に開発と運営をやってみているうちにブランチ運用が色々あってメリットデメリットそれぞれで適材適所だなと思うことが多いです。
そこで今回はブランチ運用の種類と特徴についてまとめてみます。
git flowとは?github flowとは?
ここのqiitaがすごく分かりやすいです。

git flowとは
要約するとgit flowとは、
- masterブランチ
- developブランチ
- featureブランチ
があって、developからfeatureを切って開発して、feature→develop→master(releaseブランチを切ったり)マージの手順のこと。
github flowとは
基本はgitflowと大差ないがgithubのプルリクエスト(pull request)機能を大いに使用したフロー。
- masterブランチ
- featureブランチ
ブランチはdevelopを省略してmasterからfeatureを切って開発して、feature→masterをプルリクで第三者レビューしてマージの手順のこと。
gitのブランチ間のマージ機能の素晴らしさはsubversionばかり使用していた者からすると最初は目から鱗ですよね。
git feature flowとは?
そして更に運用上臨機応変で便利なのがこちらのgit feature flow。
webアプリの案件やネイティブアプリの案件など様々かと思いますが、webやwebview系は運用上本番リリースが確定していなかったり順序が変わったり急にリリースすることがありますよね。
そんな時は
- masterブランチ
- testブランチ(stagingブランチ)
- featureブランチ
で環境ごとのブランチを運用すると便利です。
masterからfeatureブランチを切って開発して、
feature→test(そしてデバッグ)
デバッグ完了したら
feature→masterマージすることでエンハンスや改訂毎にリリースを分割できます。
参照
長々となりましたが、プロジェクトの人数の規模やレビュー体制やリリース頻度などに合わせてブランチ運用は様々な最適解があるので適宜見直していければなと思います。
それでは。