Git Flow は、Git による開発をチームで安全・効率的に行うためのブランチ運用ルールです。 この記事では、初心者でもすぐに理解できるよう、Git Flow の基本構造(main、develop、feature、release、hotfix ブランチ)と、それぞれの役割・使い方を図とともに解説します。
Git Flowとは?
Git Flow とは、Vincent Driessen 氏が2010年に提唱した、安定性と並行開発を両立するためのブランチ戦略です。複数人でのチーム開発では、日々の機能追加やバグ修正、リリースの準備など、さまざまな作業が同時進行で発生します。 そのすべてを1本のブランチ(たとえば main)だけで進めてしまうと、作業がぶつかったり、リリース中に開発中のコードが混ざってしまうなど、トラブルの原因になります。
Git Flowはこのような問題を避けるために、用途に応じたブランチを明確に分け、役割と流れをルール化することで、誰が何をしているのかが明確になり、安定した開発体制を築くことができます。とくに、次のようなプロジェクトに向いています:
- 複数人で同時に作業する中〜大規模な開発
- 本番リリースの品質やタイミングを重視したいプロジェクト
- リリース後のバグ修正やバージョン管理も想定している開発体制
ブランチ構成の基本
| ブランチ名 | 役割 |
|---|---|
main | 本番にリリースされた安定版を管理 |
develop | 最新の開発コードを集約(リリース前の状態) |
feature/* | 新機能開発用の一時ブランチ |
release/* | リリース準備用の調整ブランチ |
hotfix/* | 本番環境での緊急修正ブランチ |
各ブランチの役割と運用方法
✅ main ブランチ
main は、本番リリースされた安定版コードだけを管理するブランチです。 常にリリース可能な状態に保たれており、リリース時にはタグを使ってバージョン管理を行うのが一般的です。 このブランチに直接コミットすることはなく、通常は release や hotfix ブランチからマージされることで更新されます。
✅ develop ブランチ
develop は、日々の開発作業を集約するための統合ブランチです。 複数の feature ブランチの変更を統合し、次期リリースに向けた最新版コードを管理します。 基本的にはこのブランチから feature や release ブランチが派生し、開発が完了したら戻ってくる中心的な存在です。
✅ feature ブランチ
feature ブランチは、1つの新機能や改善タスクに対応する開発用の一時ブランチです。 develop ブランチから作成し、作業中のコードが他の開発や本番に影響しないよう隔離します。 作業が完了したら develop にマージして統合します。
✅ release ブランチ
release ブランチは、開発が一区切りついた後、本番公開前の調整・テスト・軽微な修正を行うためのブランチです。 コードが安定したら main にマージしてリリースし、同時に develop にも反映します。 このブランチでリリースバージョンをタグ付けするのが一般的です。
- 命名例:
release/1.0.0
✅ hotfix ブランチ
hotfix ブランチは、リリース後の本番環境で発覚したバグなどを緊急で修正するためのブランチです。 main から直接作成し、修正後は main にマージして即時リリースされ、develop にも反映して次回リリースにも組み込まれます。
- 命名例:
hotfix/fix-typo - リリース後に発覚したバグなどの緊急対応
mainから作成し、修正後はmainとdevelopにマージ- 命名例:
hotfix/fix-typo
Git Flowの運用手順(例)
Git Flowでは、用途に応じたブランチを使い分けて開発を進めていきます。ここでは、新機能の追加からリリース、そして本番バグの対応まで、典型的な流れを順を追って説明します。Git Flowでの開発の流れは下記の図のようになっています。

developからfeature/機能名を作成して機能開発を開始- 複数人が別々の
featureブランチで同時並行に作業できます。
- 複数人が別々の
- 機能開発が完了したら
featureブランチをdevelopにマージ- すべての開発ブランチの成果は
developに集約されます。
- すべての開発ブランチの成果は
- リリースの準備が整ったら
developからrelease/バージョン名を作成- 本番公開に向けた最終チェック・軽微な修正・バージョン設定などを行います。
- テストや調整が終わったら
releaseをmainにマージしてリリース- リリースタグ(例:
v1.0.0)を付けるのもこのタイミングです。
- リリースタグ(例:
releaseブランチの変更をdevelopにもマージして状態を同期- 本番修正が開発側に漏れないよう、整合性を取ります。
- リリース後にバグが発覚した場合は
mainからhotfix/修正名を作成して緊急対応- 修正後は
mainとdevelopの両方にマージします。
- 修正後は
このように、Git Flowは各ブランチに明確な役割を持たせ、安定性と開発スピードを両立する運用を可能にしています。
Git Flowのメリットとデメリット
| 項目 | メリット | デメリット |
|---|---|---|
| 分かりやすさ | ブランチの役割が明確で、作業の流れが把握しやすい | ルールが複雑で初心者にはとっつきにくい場合がある |
| 安定性 | 本番コード(main)と開発コード(develop)を分離し、品質を担保できる | リリース直前のコード管理が煩雑になることがある |
| 拡張性 | 並行開発に強く、機能追加・修正・リリースがスムーズに運用できる | 小規模プロジェクトではオーバースペックになることがある |
| 実務向き | 緊急修正(hotfix)やリリース調整(release)など、実運用に必要な流れが備わっている | ブランチの数が多くなり、運用を覚えるまでにやや時間がかかる |
| 自動化対応 | Git FlowコマンドやCI/CDと組み合わせて整備しやすい | 手作業が多くなりがちで、補助ツールがないと煩雑になりやすい |
デメリットも無理やり捻り出しましたが、mainブランチのみで運用するより、格段とメリットの方が多いです。どうしても小規模でそこまで開発の工数も多くない場合は、releaseやhotfix、featureは採用しなくても開発は可能かと思います。それでもmainのみで開発・運用するのは必ず避けましょう。
Git Flowコマンドで開発環境を整える方法
Git Flowは単にルールとして理解するだけでなく、コマンドを使って実際にブランチを操作することで、よりスムーズに開発を進められます。以下では、基本的な開発フローをGit Flowコマンドでどのように構築できるかを紹介します。
▶ Git Flowをインストール
まずはGit Flowのコマンド群をインストールする必要があります。
macOS(Homebrew使用)
brew install git-flow
Ubuntu / Debian系
sudo apt install git-flow
Windows
https://github.com/petervanderdoes/gitflow-avh/wiki/Installation を参照し、Git Bashなどに対応したインストーラーを使用してください。
インストール後、git flow version で動作確認できます。
▶ Git Flowを初期化
git flow init
- ブランチ構成や命名規則を設定するための初期コマンド。
- 質問に答えて、
mainやdevelopなどの基本ブランチを設定。
質問される内容とおすすめの答え:
| 質問内容 | おすすめの答え | 説明 |
|---|---|---|
Branch name for production releases: [master] | main | 本番用リリースに使うブランチ名 ※そのままEnterにするとmasterになる |
| Branch name for “next release” development: [develop] | develop | 開発作業を統合するブランチ名 ※そのままEnterでOK |
| Feature branches? [feature/] | feature/ | 機能開発ブランチの接頭辞 ※そのままEnterでOK |
| Release branches? | release/ | リリース準備ブランチの接頭辞 ※そのままEnterでOK |
| Hotfix branches? | hotfix/ | 緊急修正ブランチの接頭辞 ※そのままEnterでOK |
| Support branches? | 空欄でOK | 特別な長期サポートがなければ不要 ※そのままEnterでOK |
| Version tag prefix? | v | タグを付ける際のプレフィックス(例:v1.0.0) |
▶ 機能追加ブランチの開始
git flow feature start login-form
developからfeature/login-formを作成し、自動で切り替わります。
▶ リリース準備ブランチの開始
git flow release start v1.0.0
developからrelease/v1.0.0を作成。- 本番前のテストや軽微な修正を行う場所です。
▶ 緊急修正ブランチの開始
git flow hotfix start fix-bug
mainからhotfix/fix-bugを作成。- 本番環境でのバグ修正に使います。
💡 各
startコマンドには対応するfinishコマンドがあり、マージとブランチ削除を自動で行えます。
git flow feature finish login-form
これにより、開発の流れが整備され、チーム全体での作業が統一されたルールに基づいて効率よく進められるようになります。
まとめ
- Git Flow は中〜大規模のチーム開発に向いたブランチ戦略
- main / develop / feature / release / hotfix に分けて用途別に管理
- 運用ルールを明確にすると、開発の効率・安全性が大幅アップ!






