メインコンテンツへ
開発技術開発・運用実践

Git Flowにおけるブランチ戦略に関する記述として、最も適切なものはどれか。

ア.Git Flowはmainブランチのみで開発を行い、タグで本番リリースのバージョンを管理するシンプルな運用方式。
イ.Git Flowは開発者が直接mainブランチにコミットし、問題が発生したらrevertコマンドで元に戻す連続デプロイ方式。
ウ.Git Flowはmain・develop・feature・release・hotfixの5種類のブランチを役割別に使い分け、チーム開発でのリリース管理を体系化したブランチ戦略。正解
エ.Git Flowはプルリクエストを必須とし、Short-livedな機能ブランチをmainに直接マージする継続的デリバリー向けの軽量なブランチ戦略。

解説

Git Flowは「都市計画のゾーニング」。開発(develop)・製品(main)・工事中(feature)・出荷準備(release)・緊急修理(hotfix)と用途を明確に区分し、混乱なく大規模開発を整理する方法論です。

なぜ ウ が正解か

ウが正解。Git Flow(Vincent Driessen考案)は5種のブランチを定義する。①main:本番リリース済みコード。②develop:次期リリースの開発統合ブランチ。③feature/xxx:新機能開発(developから分岐→developへマージ)。④release/x.x.x:リリース準備(develop→main・developへマージ)。⑤hotfix/xxx:本番障害の緊急対応(main→main・developへマージ)。計画的なリリースサイクルに向いた体系的な戦略。

なぜ ア は間違いか

mainブランチのみで開発してタグ管理するのはGit Flowではなく、最もシンプルな「trunk-based development」の一形態。Git Flowの特徴は複数ブランチの役割分担にある。

なぜ イ は間違いか

開発者が直接mainにコミットして問題はrevertで対処するのは、trunk-based developmentに近い方式。Git Flowはmainへの直接コミットを禁止し、必ずreleaseやhotfixブランチを経由する構造。

なぜ エ は間違いか

Short-livedな機能ブランチをmainに直接マージするのはGitHub Flowの説明。GitHub FlowはGit Flowより軽量で、develop・release・hotfixブランチを持たずmainとfeatureブランチのみで構成する継続的デリバリー向けの戦略。

出典: AI生成問題(学習用)