Instiq
第2章 · ソース管理の設計と実装·v2.0.0·更新 2026/6/3·読了目安 約10分

変更要約: AZ-400 第2章を深掘り(比較表・シナリオ・FAQ・ひっかけ・深掘り段落を各節に追加、図を日本語版に対応)

2.1Git とブランチ戦略

この節の要点

ソース管理の基盤——Git(分散バージョン管理)、ブランチ戦略(trunk-based / GitHub Flow / GitFlow)フィーチャーブランチマージ vs リベース——を理解します。チームで安全に並行開発します。

DevOps の土台はソース管理です。Git を中心に、チームに合うブランチ戦略で並行開発を安全に進めます。

2.1.1Git とブランチ戦略

Git のブランチ戦略を比較した図。trunk-based development(main へ小さく頻繁にマージ・短命なフィーチャーブランチ・CI と相性◎)、GitHub Flow(main+短命なフィーチャーブランチ+PR、シンプル)、GitFlow(main/develop/feature/release/hotfix と多層、リリース管理が厳格)を並べ、フィーチャーブランチで作業し PR でレビュー後に main へ統合、履歴整理はマージ(履歴保持)かリベース(直線化)で選ぶことを示した図。
Git とブランチ戦略
  • trunk-basedmain へ小さく頻繁に統合。短命なブランチ。CI/CD と相性が良い。
  • GitHub Flowmain+短命フィーチャーブランチ+PR。シンプルで継続的デリバリー向き。
  • GitFlowmain/develop/feature/release/hotfix の多層。厳格なリリース管理向き。
  • マージ vs リベース:マージは履歴を保持、リベースは履歴を直線化する。
試験ポイント

「小さく頻繁に統合=trunk-based(CI/CD 向き)」「シンプルな main+PR=GitHub Flow」「多層で厳格なリリース=GitFlow」「履歴保持=マージ、直線化=リベース」 は AZ-400 で頻出です。長命なブランチはマージ地獄を招くため、短命ブランチ+頻繁な統合が推奨されます。

補足

大きなバイナリは Git LFS で管理し、リポジトリの肥大化を防ぎます。モノレポ/マルチレポはチーム構造と依存関係に応じて選びます。

AZ-400 は「チームとデリバリー目標に合うブランチ戦略を選び、CI/CD と整合させる」設計力を問います。trunk-based development は main(トランク)へ小さく頻繁に統合し、ブランチを短命(数時間〜数日)に保つことでマージコンフリクトと統合リスクを最小化——フィーチャーフラグで未完成機能を隠しつつ本番ブランチを常にリリース可能に保つのが定石で、CI/CD と最も相性が良いです。GitHub Flow は main+短命フィーチャーブランチ+PR のシンプルな継続的デリバリー型。GitFlow は develop/release/hotfix を持つ多層モデルで、明確なリリースサイクルや複数バージョン併存が要る製品向きですが、長命ブランチがマージ負担を増やすため近年は trunk-based が推奨される傾向です。履歴管理は、マージ(マージコミットで分岐履歴を保持)リベース(コミットを付け替えて直線化)を使い分け、共有済みブランチのリベースは履歴改変になるため避けます(squash マージで PR を 1 コミットに集約する運用も一般的)。大きなバイナリは Git LFS(ポインタ+別ストレージ)で扱い、モノレポ(統合・横断変更が容易だがスケールに工夫が要る)とマルチレポ(独立・疎結合だが横断変更が面倒)をチーム構造と依存で選びます。設計の要は、短命ブランチ+頻繁な統合+PR レビュー+CI を基本線に、製品のリリース要件に応じて戦略を調整することです。

戦略特徴向くケース
トランクベースmain へ小さく頻繁・短命ブランチ・フラグ高頻度 CI/CD・継続的デプロイ
GitHub Flowmain+短命ブランチ+PRシンプルな継続的デリバリー
GitFlowdevelop/release/hotfix の多層明確なリリースサイクル/複数版
マージ vs リベース履歴保持 / 直線化監査重視 / 履歴の見やすさ重視
補足

シナリオ:1 日に何度も本番デプロイしたい SaaS チームで、マージコンフリクトと統合の遅れに悩んでいる。→ trunk-based development を採用し、ブランチを短命(その日のうちにマージ)に保つ。未完成の機能はフィーチャーフラグで隠して main を常にリリース可能に。PR にはビルド検証(CI)と必須レビューを課し、squash マージで履歴を整理。長命な develop ブランチ(GitFlow)は廃止して統合の遅延を解消します。

補足

FAQ:マージとリベース、どちらを使う? 共有ブランチ(main 等)にはマージが安全で、分岐の履歴と監査性を保てます。自分のローカルな未共有フィーチャーブランチを最新化するときはリベースで直線的な履歴を作れます。原則「公開済みの履歴はリベースしない」。PR 統合時に squash マージを使えば、フィーチャー内の細かいコミットを 1 つに集約して main の履歴を読みやすく保てます。

注意

ひっかけ:「CI/CD を高頻度で回したい」のに GitFlow の長命な develop/feature ブランチを選ぶのは逆効果——長命ブランチは統合を遅らせマージ地獄を招きます。高頻度デリバリーには trunk-based(短命ブランチ+フラグ)が正解。また、共有済みの main をリベースして履歴を書き換えるのは厳禁(他者の履歴を壊す)です。

2.1.2この節のまとめ

  • 戦略=trunk-based / GitHub Flow / GitFlow
  • 統合=短命ブランチ+頻繁な統合/履歴=マージ vs リベース

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. CI/CD を最大限に活かすため、main へ小さく頻繁に統合する短命ブランチ中心の戦略を採りたい。どれですか?

Q2. main・develop・release・hotfix など多層のブランチで厳格にリリース管理したい。どの戦略ですか?

Q3. フィーチャーブランチの履歴を main に取り込む際、履歴を直線的に整理したい。どの操作ですか?

理解度を確認第2章「ソース管理の設計と実装」の問題を解く