Blog Open Source What is GitFlow?
Published on: September 27, 2024
5 min read

What is GitFlow?

This article introduces the differences between GitFlow and GitLab Flow, explains what GitFlow is, how it works, its benefits, and answers frequently asked questions.

AdobeStock 662057734

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

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:

  1. main
  2. develop
  3. feature
  4. release
  5. 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.

GitFlow example

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!

We want to hear from you

Enjoyed reading this blog post or have questions or feedback? Share your thoughts by creating a new topic in the GitLab community forum. Share your feedback

Ready to get started?

See what your team could do with a unified DevSecOps Platform.

Get free trial

Find out which plan works best for your team

Learn about pricing

Learn about what GitLab can do for your team

Talk to an expert