Gitflow is a strict, defined branching model designed to manage large projects and scheduled releases by separating development from release-focused work.
It relies on two permanent, core branches: main (or master), which only holds production-ready, tagged releases, and develop, which serves as the main integration branch for ongoing work. Developers create long-lived feature branches off of develop and dedicated release branches to prepare for new version rollouts.
This multi-branch structure is highly effective for teams requiring scheduled, infrequent releases and maintaining a rigorous history of versioned code.
main: This is the ultimate source of truth, holding the code that is currently in production. Commits on this branch must be tagged with a version number and are the only commits considered official releases.develop: This is the primary branch for all ongoing development. It integrates all completed features and reflects the latest deliverable state of the project for the next major release.feature/*: Used for all new functionality.bugfix/*: Reserved for bugfixes.release/*: Used to prepare a new production release. No new features are added here; it's strictly for polishing and bug fixing.hotfix/*: Reserved for urgent, production-breaking fixes.support/* (optional): Used to manage and maintain older, currently supported versions of the software that are still in use.git-flow-nextEasily integrate new commits from your parent branch into your feature branch by simply typing git flow next update ✌️
For more visual assistance, take a look at Tower, our native Git client for both Mac and Windows.
Tower allows you to set up any workflow configuration with just a few clicks, along with other advanced features such as: