【ぎっとふろー】

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」で提唱したブランチモデル
← 用語集にもどる