Gitflow is a branch-based workflow for teams. It proposes to have a develop
branch, from which developers create feature/name
branches. xOnce the work within the feature branch is done, a pull request is created to merge the changes back into develop
. The develop
branch itself is regularly merged into trunk (usually main
or master
).
Gitflow is not necessarily tightly coupled to Git; any Version Control System that supports branching could be used.
The advantage of Gitflow is high-level of control when & which feature is being released (merged down to trunk). It also makes changes visible to the developer community and provides a entry point for discussion and learning.
The disadvantage of Gitflow is that parallel development in feature branches can easily create conflicting code changes, which can be very hard to solve and come with a high potential for mistakes, due to complexity combined with unclear ownership / responsibility.
Branch-based workflows in general are considered incompatible with Continuous Integration - i.e. unfitting for continuous work on code-bases in closed organizations - and discouraged in favor of Trunk Based Development. However, for open source, or “seasonal work”, the workflow is still viable, maybe ideal.