In GitFlow, developers create a separate "develop
" (for development) branch in addition to the "main
" (for operation) branch and set it as the default. However, with GitLab Flow, work can begin directly on the main
branch. GitLab Flow incorporates pre-production branches, allowing for bug fixes before merging changes into the main
branch and deploying to production. For example, teams can add as many pre-production branches as needed, such as flowing from main
to test, test to acceptance, or acceptance to production.
In this article, you'll learn the differences between GitFlow and GitLab, what GitFlow is, how it works, its benefits, and get answers to frequently asked questions.
Table of contents
- What is GitFlow
- How GitFlow works
- How GitFlow and GitLab Flow differ
- GitFlow's workflow
- GitLab Flow's workflow
- Benefits of using GitFlow and its features
- GitFlow example
- GitLab Flow and GitFlow FAQ
What is GitFlow
GitFlow is a Git workflow designed for managing branches in Git (a distributed version control system); it serves as a branching model for Git repositories. Created to simplify complex software release management, it was introduced by Vincent Driessen in 2010. It is particularly popular among large teams.
How GitFlow works
Compared to trunk-based development, GitFlow features persistent branches and tends to involve larger commits. GitFlow can be used for projects with scheduled release cycles and aligns with DevOps best practices for continuous delivery. GitFlow provides a structured workflow where branches are defined for specific purposes, such as creating feature branches off the develop
branch and the 'main' branch, preparing release
branches, and eventually merging into main
. This structure makes it easier for teams to understand where changes should be integrated within their development pipeline.
How GitFlow and GitLab Flow differ
GitFlow is a Git branching model that utilizes multiple primary branches in addition to feature branches. GitLab Flow aims to address some of the complexities inherent in GitFlow, enabling team members to work more efficiently. Let's examine the workflow differences in more detail.
GitFlow's workflow
The GitFlow workflow involves the following five types of branches:
- main
- develop
- feature
- release
- hotfix
When using GitFlow for code development, you work with the main branch and various supporting branches. There are two primary long-lived branches: the main branch for production-ready code, and the develop branch for integrating source code under development. Codes are stabilized in the develop
branch, prepared to be released, and then merged into the main branch when ready. Supporting branches, such as feature, release, and hotfix branches, are created to handle specific development tasks.
GitLab Flow's workflow
GitLab Flow streamlines development by preventing the overhead associated with releases, tagging, merging, and more.
GitLab Flow is a simplified alternative to GitFlow, combining feature-driven development with issue tracking capabilities. Using GitLab Flow enables simple, straightforward, and efficient workflows. GitLab Flow incorporates best practices to help software development teams release features smoothly.
GitLab Flow is the workflow used in GitLab's own development. It involves branches such as the main
branch; a pre-release testing branch, pre-production
; a branch for managing released code, production
; and branches for feature development or bug fixes like feature``hotfix
. Teams can add as many pre-production branches as they need. For example, creating flows such as from main
to test, from test to approval, and from approval to production.
While teams create feature branches, they also manage production branches. Once the main branch is ready for deployment, it will be merged into the production branch and released. GitLab Flow can also be utilized with release branches. Teams needing public APIs must manage different versions; GitLab Flow facilitates this by allowing the creation of individually manageable branches like v1
and v2
, making it convenient to revert to v1
if bugs are detected during code review.
Benefits of using GitFlow and its features
1: Rapid handling of bug fixes
One benefit of using GitFlow is the ability to quickly handle bug fixes in the production environment. GitFlow is employed as a Git (distributed version control system) workflow, particularly by large teams engaged in complex software development.
2: Ensured testing
When releasing software from a release branch, you can allocate time for users to test in a staging environment. This can occur independently of ongoing code development. Furthermore, as commits flow downstream through different stages, it helps ensure testing across all relevant environments.
3: Streamlined software development process
Using GitFlow allows you to leverage Git to its full potential. This, in turn, helps streamline the software development process.
4: More efficient collaboration, conflict resolution, and continuous delivery
Implementing GitFlow enhances collaboration efficiency. Merge conflicts can be resolved quickly, enabling continuous delivery.
GitFlow example
The diagram below illustrates an example configuration of GitFlow. It should help clarify the overall flow, including the different branches and their structure.
GitLab Flow and GitFlow FAQ
Q: What is Git Feature Flow?
A: It is one of the proposed development workflows that utilize Git. Git Feature Flow is suitable for handling simpler development requirements.
Q: Is GitLab Flow worth using?
A: Yes. GitLab Flow reduces the overhead associated with activities like releasing, tagging, and merging. These can be common issues encountered in other Git workflows. For more details, see these GitLab Flow best practices.
Q: How should I choose between GitLab Flow and GitFlow?
A: Git Flow, due to its structure, is well-suited for large projects with clearly defined development stages. GitLab Flow, being more agile, is better suited for projects that prioritize continuous delivery and rapid releases.
Get started with GitLab
Start your free, 60-day trial of GitLab Ultimate and GitLab Duo Enterprise today!