GitFlow とは?
GitFlow は、長命な main と develop ブランチに加え、補助的な feature、release、hotfix ブランチへと作業を整理するブランチモデルです。
GitFlow は、あらゆる種類の作業にそれぞれ独自のブランチタイプを与える、よく知られたブランチ戦略です。スケジュールされたリリースを持つプロジェクトに構造をもたらしますが、多数の長命なブランチが統合を遅くすることがあります。それを理解することで、その手続きが自分のチームに合うかどうかを判断できます。
GitFlow のブランチ
GitFlow は、リリース済みのコードを保持する恒久的な main ブランチと、継続的な統合のための develop ブランチを使います。feature ブランチは develop から分岐し、release ブランチは出荷前にバージョンを安定させ、hotfix ブランチは main から直接プロダクションをパッチします。各タイプには定義された目的とマージ経路があります。
作業の流れ
feature は develop から分岐し、完了したらマージし戻します。十分な機能が蓄積すると、最終的な安定化のために release ブランチが切られ、その後 main と develop の両方にマージされます。
git switch develop
git switch -c feature/reports
# build, then merge back into develop強みとトレードオフ
GitFlow はあらゆる作業に明確な場所を与えるため、正式なリリースサイクルを持つバージョン管理された製品に適しています。欠点は、長命な develop ブランチと feature ブランチが main から乖離し、統合が重くなることで、これはトランクベース開発とは正反対です。今では多くのチームがより軽量なモデルを好みます。
CI/CD における GitFlow
パイプラインはブランチ構造を映し出します。develop はステージングにデプロイし、release ブランチは拡張された検証を実行し、main はプロダクションにデプロイします。多数のブランチタイプは、より多くのワークフロールールと管理すべきより多くの環境を意味するため、CI 設定はブランチの手続きとともに大きくなります。
GitFlow はあなたに適しているか
- スケジュールされたリリースやバージョン管理された製品に適しています。
- 動きの速い Web アプリにはトランクベース開発より重くなります。
- ブランチごとの CI ルールと複数の環境が必要です。
- 長命な develop ブランチと feature ブランチの乖離に注意します。
重要なポイント
- GitFlow は feature、release、hotfix、develop、main ブランチを定義します。
- スケジュールされたリリースに適していますが、長命ブランチのオーバーヘッドが加わります。
- CI はブランチタイプを環境にマッピングし、パイプラインの複雑さが増します。