GitFlow

framework · computer science · organizing-schema

Driessen's branching model with develop, feature, release, and hotfix branches.

GitFlow was articulated by Vincent Driessen in his 2010 blog post 'A successful Git branching model' (nvie.com), prescribing a branching strategy with two persistent branches (master for production-ready code, develop for ongoing integration) and three categories of supporting branches (feature branches for new development, release branches for preparing releases, and hotfix branches for emergency production fixes). The model was widely adopted in the early 2010s as Git replaced Subversion in many organizations and provided structure for teams unfamiliar with distributed version control. Driessen himself published a 2020 update noting that GitFlow was designed for software with explicit version-numbered releases (downloadable, packaged software) and that for continuously-deployed web applications, simpler flows like trunk-based development with feature flags are more appropriate. GitFlow remains in use for software with formal versioned releases (libraries, packaged software, embedded systems, mobile apps with app-store release processes), but for web applications has been largely superseded by trunk-based development in modern engineering organizations.

Originators

Vincent Driessen high

Year / Decade

2010 (Driessen blog post); 2020 (Driessen update note) high

Primary sources

Driessen, V. (2010). 'A successful Git branching model' (nvie.com), Driessen, V. (2020). 'Note of reflection' update on the original post high

Core components

Primary use case

Software with explicit version-numbered releases: libraries, packaged software, embedded systems, mobile apps with app-store release processes; teams transitioning from older version-control systems where the structured model provides comprehensible scaffolding; legacy enterprise environments; reference model in Git training and certification materials.

Common criticisms

Lineage

Siblings
Trunk-Based Development