【ぎっとふろー】

GitFlow とは?

最終更新:
💡 機能づくり・公開準備・緊急修正を、分けて進める

Gitのブランチに開発・リリース準備・緊急修正の役割を割り当てる運用モデル。リリース用と開発統合用の長期ブランチに、feature・release・hotfixの短期ブランチを組み合わせる。あらゆる開発に必須のGit機能ではない。

📌 このページのポイント
役割で分ける、ブランチの行き先リリース用 main / 開発統合用 develop新しい機能を作るdevelopfeaturedevelop公開の準備をするdevelopreleasemainreleaseの修正はdevelopにも戻す緊急の修正をするmainhotfixmainhotfixの修正も、次の開発へ戻す
主要な分岐と統合先を抜き出した図。原典のmasterをmainと表記。hotfixの進行中releaseへの反映などは本文で説明しています。
ひよこ ひよこ
Gitに最初から、決まっているルール?
ペンギン先生 ペンギン先生
Gitの機能そのものではなく、ブランチの使い方を決める運用モデルだよ。長く使うリリース用のmainと開発統合用のdevelop、必要な期間だけ使うfeature・release・hotfixに役割を分けるんだ。
ひよこ ひよこ
新機能は、どこで作る?
ペンギン先生 ペンギン先生
developからfeatureを分岐して作り、できたらdevelopへ統合するよ。未完成なら取り込まないこともある。ブランチを分けるだけで品質が保証されるわけではないので、レビューやテストも必要だね。
ひよこ ひよこ
releaseは、何をする?
ペンギン先生 ペンギン先生
developから分岐して、その版の公開準備をするよ。最終的な修正やバージョン情報の調整を行い、mainへ統合してタグを付け、修正をdevelopにも戻す。その間、developでは次の開発を進められるんだ。
ひよこ ひよこ
緊急の修正は、どうする?
ペンギン先生 ペンギン先生
リリース用のmainからhotfixを分岐するよ。完成した修正をmainとdevelopの両方へ反映するのが基本。releaseが進行中なら、原典ではそのreleaseへ戻す場合も説明している。次の版から修正が抜けないことが大切だね。
ひよこ ひよこ
どんなチームでも、これが最適?
ペンギン先生 ペンギン先生
状況によるよ。提唱者は2020年に、継続的デリバリーにはより単純な方式を勧める追記をしている。一方、明示的な版や複数の版を維持するソフトウェアでは合う場合がある。人数だけでなく、公開と保守の方法に合わせて選ぼう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「GitFlow」って出てきたら「開発・公開準備・緊急修正で、ブランチを使い分ける運用の型」と思えばだいたいOK!
📖 おまけ:英語の意味
「Git flow」 = Gitを使った開発の流れ
💬 Vincent Driessenが2010年の記事で紹介したモデル。原典のリリース用ブランチ名はmasterで、このページの図ではmainと表記しているよ。

参考資料

← 用語集にもどる