複数人でのソフトウェア開発において、バージョン管理システムのブランチ設計はプロジェクトの安定性とリリース頻度を左右する重要な要素です。本稿では、本番環境の保護と並行開発の効率化を両立させるための代表的なブランチ構成について解説します。主に5種類のブランチを使い分け、それぞれの役割と具体的な操作手順を整理します。
各ブランチの役割と定義
- master ブランチ
製品版コードを格納する安定ブランチです。常にデプロイ可能な状態を維持し、このブランチへのマージはそのままリリースを意味します。各コミットはバージョン管理されたスナップショットとして扱われます。 - develop ブランチ
次期バージョンに向けた統合ブランチです。新規機能の実装が完了したコードが集約され、結合テストや品質検証が行われる場となります。開発サイクルの基点となります。 - feature ブランチ
個別機能や改修作業専用のブランチです。develop から分岐し、実装完了後に再度 develop へ統合されます。命名規則はfeature/機能名とするのが一般的です。 - release ブランチ
リリース準備専用のブランチです。バージョン番号の確定、ドキュメント整備、軽微な不具合修正を行います。develop から作成し、準備完了後は master と develop の両方へ反映されます。 - hotfix ブランチ
本番環境で発生した重大な障害を緊急修正するためのブランチです。master から直接分岐し、修正後は master および develop へ迅速にマージして整合性を保ちます。
実際の運用フローとコマンド例
新規機能の開発(Feature)
機能開発は develop を基点に開始し、完了後に統合します。履歴を明確に残すため、マージ時は --no-ff オプションを推奨します。
# 開発ブランチの作成
git switch develop
git switch -c feat/user-dashboard
# 実装完了後の統合
git switch develop
git merge --no-ff feat/user-dashboard
git branch -d feat/user-dashboard
リリース準備(Release)
機能凍結後に release ブランチを作成し、最終調整を行います。完了後は本番用と開発用の両方に反映し、タグ付けを行います。
# リリース作業用ブランチの作成
git switch develop
git switch -c release/v2.4.0
# 本番環境への反映とバージョンタグの付与
git switch master
git merge --no-ff release/v2.4.0
git tag -a v2.4.0 -m "Stable release v2.4.0"
# 開発ブランチへの同期とブランチ削除
git switch develop
git merge --no-ff release/v2.4.0
git branch -d release/v2.4.0
本番環境の緊急修正(Hotfix)
運用中のシステムで致命的な問題が発覚した場合、master から直接分岐して対応します。修正後は開発ラインにも必ず反映し、バージョンの乖離を防ぎます。
# 緊急修正用ブランチの作成
git switch master
git switch -c hotfix/auth-timeout-error
# 修正完了後の本番反映とタグ付け
git switch master
git merge --no-ff hotfix/auth-timeout-error
git tag -a v2.4.1 -m "Critical patch v2.4.1"
# 開発ブランチへのバックポートとクリーンアップ
git switch develop
git merge --no-ff hotfix/auth-timeout-error
git branch -d hotfix/auth-timeout-error