Skip to content
d3 Wiki
03.03

Branching strategy

Short-lived branches, always-deployable main.

Updated
Oct 3, 2026
On this page

Purpose

Short-lived branches, always-deployable main.

The standard

  • GitHub Flow. main is always deployable; every change goes through a branch and PR.

  • Branch names: feat/…, fix/…, chore/…, docs/…, exp/… (experiments — may be deleted without merging).

  • Branches live days, not weeks. If a branch is older than a week, split it or merge behind a flag.

  • Rebase on main before opening a PR; squash-merge into main so history is one commit per PR.

  • Releases are tags on main (03.06), not long-lived release branches.

  • Hotfix = normal branch + PR, prioritized.

Procedure

git switch main && git pull
git switch -c feat/short-description
# work, commit per 03.04
git fetch origin && git rebase origin/main
git push -u origin feat/short-description   # open PR

Anti-patterns

develop branches; committing directly to main; one giant branch per project.

Owner: Matt · Last reviewed: 2026-09