【ぎっとふろー】

GitFlow とは?

最終更新:
💡 5種類のブランチで開発の流れを整える「Git運用の型」
📌 このページのポイント
GitFlowのブランチ戦略 main release develop feature hotfix feature/A feature/B release v1.0 hotfix v1.1 main develop feature release hotfix マージ
GitFlowはmainとdevelopを軸に、feature・release・hotfixブランチを使い分けるブランチ戦略
ひよこ ひよこ
GitFlowって普通のGitと何が違うの?
ペンギン先生 ペンギン先生
Git自体はブランチの使い方を決めてくれない。GitFlowは「どのブランチをどう使うか」のルールを決めた運用モデルだよ。main、develop、feature、release、hotfixの5種類のブランチに役割を割り当てて、開発からリリースまでの流れを明確にする。
ひよこ ひよこ
5つのブランチの役割を教えて?
ペンギン先生 ペンギン先生
mainは本番環境と同じ状態。developは開発の統合先。featureはdevelopから分岐して1機能を作る作業用。releaseはdevelopからリリース準備のために切り出す。hotfixはmainから緊急のバグ修正用に分岐する。featureとreleaseは終わったらdevelopにマージし、releaseとhotfixはmainにもマージする。
ひよこ ひよこ
なんでmainに直接コミットしないの?
ペンギン先生 ペンギン先生
mainは「いつでもリリースできる状態」を保つことが大原則。直接コミットすると未完成のコードや検証されていない変更が入ってしまう。releaseブランチやhotfixブランチを経由することで、品質を担保してからmainに反映するんだ。
ひよこ ひよこ
releaseブランチって何するところ?
ペンギン先生 ペンギン先生
developで開発した機能がある程度たまったら、releaseブランチを作ってリリース準備をする。バージョン番号の更新、ドキュメント修正、最終テストをここで行う。この間もdevelopでは次のバージョンの開発を続けられるのがポイントだよ。
ひよこ ひよこ
最近「GitFlowは古い」って聞くけど本当?
ペンギン先生 ペンギン先生
提唱者自身が2020年に「Web系の継続的デリバリーならGitHub Flowの方がシンプルでいい」と追記したくらいだからね。GitFlowはリリースサイクルが数週間〜数ヶ月の製品(モバイルアプリやパッケージソフト)には向いているけど、毎日何回もデプロイするSaaSには重すぎる。
ひよこ ひよこ
じゃあ今はどのフローを使えばいいの?
ペンギン先生 ペンギン先生
チームの状況次第だね。CI/CDで頻繁にデプロイするならGitHub Flow(mainとfeatureだけ)がシンプルでいい。リリースバージョンの管理が必要ならGitFlowが活きる。最近はトランクベース開発といって、短命のfeatureブランチだけを使い、フィーチャーフラグで本番リリースをコントロールする手法も増えている。大事なのは「チームの開発・リリースサイクルに合った戦略を選ぶ」ことで、ブランチモデルに正解は1つじゃないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
GitFlowって出てきたら「5種類のブランチを使い分けるGitの運用ルールのことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「GitFlow」 = Gitの流れ・運用フロー
💬 Vincent Driessenが2010年にブログ記事「A successful Git branching model」で提唱したブランチモデル
← 用語集にもどる