The "GitLab Flow" Workflow

GitLab Flow is an agile, issue-centric Git workflow that simplifies development by centering on Merge Requests (MRs).

It maintains a single, stable main branch for production-ready code, avoiding the complexity of multi-branch models like GitFlow. Developers use short-lived feature branches for all work, integrating changes back into main only after review and approval via an MR.

This structure provides a streamlined path for version control, continuous integration, and Continuous Delivery (CD).

How GitLab Flow Works

GitLab Flow – Overview

Base Branches

  • production (Root Branch): This is the ultimate source of truth; the only branch that deploys to the production environment.
  • main: The primary integration branch where all new features are initially merged. It acts as the source for the staging environment.
  • staging: This branch acts as the final gate, deploying to a non-production environment that closely mimics the live setup. It is always updated from main before being promoted to production.

Topic Branches

  • feature/*: Used for all new functionality.
  • hotfix/*: Reserved for urgent, production-breaking fixes.

Keeping Feature Branches Updated with git-flow-next

Easily integrate new commits from your parent branch into your feature branch by simply typing git flow next update ✌️

GitLab Flow in the Tower Git Client

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:

  • Drag and Drop for Interactive Rebase.
  • Undo with a simple CMD+Z (CTRL+Z on Windows).
  • Branch review and branch comparison capabilities.
  • Git LFS (Large File Storage) and Submodule support.
  • Deep integration with major remote services like GitHub, GitLab, Bitbucket, and Azure DevOps.
GitLab Flow in Tower – Overview