Gitflow
Gitflow is a branching model with long-lived develop and main branches, plus feature, release, and hotfix branches. It was designed for software with discrete versioned releases (think shrink-wrapped 1.0, 1.1, 1.2 cadences) and is widely considered overkill for continuously-deployed web services.
Gitflow's reputation has shifted dramatically since its 2010 publication. For the use case it was designed for — versioned software with explicit release branches, support for multiple in-flight versions — it remains a reasonable choice. For continuously-deployed SaaS, the model adds ceremony without value: develop is a synonym for main, release branches are an indirection, and hotfix branches conflict with the deploy-from-main norm. Vincent Driessen, Gitflow's author, formally retired the model for web teams in 2020. The healthier modern defaults are trunk-based development with short-lived feature branches behind feature flags.
Related terms
- Feature branch
A feature branch is a Git branch that diverges from the main line for the duration of a single feature's development, with all that work isolated from main until the feature is complete and merged via pull request.
- Trunk-based development
Trunk-based development is a source-control workflow where engineers integrate small changes to a single shared branch (trunk / main) at least once per day, gated by automated tests and feature flags rather than long-lived branches.
- Rebase vs merge
Rebase and merge are two strategies for integrating changes from one branch into another.