The three workflows differ mainly in how long work stays away from main:
| Trunk-based | GitHub flow | Git flow | |
|---|---|---|---|
| Permanent branches | main | main | main and develop |
| Typical branch life | Hours | Days | Days to weeks |
| Review | Pairing or quick review | Pull request | Pull request |
| Unfinished work | Behind feature flags | On its branch | On its branch |
| Releases | Tags on main | Deploy from main | release/* branches |
| Fits | Continuous deployment | Web apps, small teams | Versioned, multi-release products |
BookNest is a web service deployed from one branch, maintained by a small team, with one older release line (1.1) still supported. Sam settles on trunk-based development with GitHub flow's review step: short <type>/<topic> branches reviewed as pull requests, landed on main as signed, linear commits, released with tags, and a release/x.y branch only for a version that needs a fix after main has moved on.