トランクベース開発とは?
トランクベース開発は、全員が小さな変更を単一のメインブランチに頻繁に統合し、長命なブランチを避けるブランチ戦略です。
トランクベース開発は、チームが 1 つの共有ブランチ、すなわちトランクの近くで作業し続けるようにします。何週間も存在するフィーチャーブランチではなく、開発者は小さな変更を行い、毎日、あるいは 1 日に何度もマージします。これは、高速な継続的インテグレーションを最もよく支えるブランチモデルです。
中心となる考え方
通常 main と呼ばれる 1 つのトランクがあり、常にリリース可能な状態を保ちます。作業は非常に短命なブランチ上、またはフィーチャーフラグの背後でトランク上に直接行われ、すぐにマージし戻されます。目標は、変更がトランクから離れて過ごす時間を最小限にすることです。
短いブランチのワークフロー
変更はブランチを切り、レビューとテストを受け、1 日ほどでマージされます。
A short-lived trunk branch
git switch -c fix/typo
git commit -am "Fix typo in header"
# open PR, pass CI, merge same dayなぜうまくいくのか
全員が頻繁に統合するため、マージは小さいままでコンフリクトはまれです。トランクは常に最新の現実を反映するため、苦痛なビッグバン統合はありません。未完成の機能は長命なブランチに放置されるのではなく、フィーチャーフラグの背後に隠されます。
トランクベース開発と CI/CD
このモデルは高速で信頼できるパイプラインに依存します。すべての小さな変更がすぐにマージされるなら、CI はそれぞれを数分で検証し、トランクを緑に保たなければなりません。その見返りとして、トランクは常に出荷可能に近い状態になり、それはまさに継続的デリバリーが必要とするものです。高速なランナーは、この緊密なフィードバックループを実用的にします。
うまく機能させるには
- ブランチは数週間ではなく、数時間か 1 日だけ生かします。
- 未完成の作業はフィーチャーフラグの背後に隠します。
- 頻繁なマージが検証され続けるよう、高速な CI に投資します。
- 壊れたトランクはライン停止の事態として扱います。
重要なポイント
- トランクベース開発は小さな変更を 1 つのメインブランチに頻繁に統合します。
- 長命なブランチと、それが引き起こすコンフリクトを最小限に抑えます。
- 常にリリース可能なトランクを緑に保つため、高速な CI に依存します。
関連ガイド
What Is a Feature Branch?What is a feature branch? Learn how an isolated branch holds work on one feature until it is reviewed and tes…
What Is GitFlow?What is GitFlow? An explainer on the branching model with develop, release, feature, and hotfix branches, whe…
What Is a Git Merge?What is a Git merge? An explainer on how merging combines branches, fast-forward versus merge commits, confli…