Git Flow |  | Complex branching strategy for parallel development. Developers create feature branches from a develop branch, then merge them back for release . It uses multiple branch types: master , develop , feature , release , and hotfix . Master and develop are long-lived, while others are short-lived and for supporting development | - master: Stable production code
- develop: Ongoing development
- feature: New features (short-lived)
- release: Preparing for release (from develop)
- hotfix: Urgent bug fixes (from master)
| - Stable releases: separate
dev branches protect main branch - Organized work: clear branch types for specific tasks
- Manages multiple versions
| - Complex merging: multiple branches to manage
- Debugging difficulty: many commits make finding issues hard
- Slower development: complexity slows down process
| Large teams, complex projects |
GitHub Flow |  | No release branches. Developers work on feature branches from main , then merge back and delete the branch. Main branch stays deployable | - main: Production-ready code
- feature: New features and bug fixes (short-lived)
| - Fast, streamlined: Agile principles, short cycles, frequent releases
- Faster feedback: quick identification and resolution of issues
- Efficient deploys: single branch for testing/automation
| - No multiple versions
- Unstable code risk: no
dev branch, requires thorough testing - Merge conflicts: for larger teams & transparency issues
| Small teams, rapid development |
GitLab Flow |  | Simplifies branching with direct main branch use. Great in multi-environment development, isolating versions and prioritizing stability with internal testing before production deployments | - master: Production-ready code
- environments: staging / testing/ pre-production / production
- feature: New features and bug fixes (short-lived)
| - Good balance between simplicity and release management
| - Requires strong emphasis on CI/CD practices
| Small teams, rapid development |
Trunked Based |  | Developers commit directly to a shared, always-releasable trunk multiple times a day. This fosters CI/CD by enabling frequent integration and faster releases. Feature flags help by decoupling deployment from release, keeping unfinished features hidden while complete ones are released quickly | - trunk: Single branch for all development
- feature: New features and bug fixes (short-lived)
| - Enables CI with frequent trunk updates
- Improves collaboration with direct trunk commits (better visibility)
- Reduces merge conflicts with frequent small pushes
- Faster releases with constantly releasable trunk
| - Requires experienced devs for shared trunk management
| Continuous delivery pipelines |