Git Workflows: Gitflow and Alternative Approaches

Git Workflows: Gitflow and Alternative Approaches

A Git workflow is a recipe or recommendation for how to use Git to accomplish work in a consistent and productive manner. Without a defined workflow, teams quickly descend into chaos, facing constant merge conflicts and release confusion.

This chapter covers the most popular Git workflows used in the industry today, ranging from simple centralized models to complex release-oriented structures.


1. Centralized Workflow

The Centralized Workflow is the simplest possible approach. It mimics the traditional SVN (Subversion) model, where a single central repository serves as the "source of truth."

Graphic Representation

v1.0v1.1main

Description

In this workflow, developers clones the central repository, makes changes locally, and then pushes them directly back to the main branch. There are no other branches used for development.

  • Complexity: ⭐ (Low)
  • Best For: Small teams (1-2 people), solo projects, or teams transitioning from SVN.

Advantages:

  • Extremely simple to learn and use.
  • No branch management overhead.
  • Linear history is easy to follow.

Disadvantages:

  • High risk of merge conflicts as the team grows.
  • No isolation for experimental or broken code.
  • "Main" can be unstable if a developer pushes buggy code.

2. Feature Branch Workflow

The Feature Branch Workflow builds on the Centralized Workflow by isolating each new feature or bug fix into its own dedicated branch.

Graphic Representation

mainfeature branch

Description

Developers create a new branch for every task (e.g., feature/login-form). When the task is complete, they open a Pull Request (PR) to merge it back into main.

  • Complexity: ⭐⭐ (Low-Medium)
  • Best For: Most modern software teams of any size.

Advantages:

  • Keeps main stable and deployable.
  • Enables code review via Pull Requests.
  • Multiple developers can work on different features simultaneously without interference.

Disadvantages:

  • Can lead to long-lived branches that are difficult to merge.
  • Requires discipline in branch naming and PR management.

3. Gitflow Workflow

Gitflow is a strict branching model designed around the project release cycle. It is much more structured than the Feature Branch workflow.

Graphic Representation

maindevelopfeaturerelease / hotfix

Description

Gitflow uses two primary branches (main and develop) and several supporting branches for features, releases, and hotfixes.

  • Complexity: ⭐⭐⭐⭐⭐ (High)
  • Best For: Large teams with scheduled release cycles (e.g., mobile apps, legacy enterprise software).

Advantages:

  • Explicitly handles releases and hotfixes.
  • Great for projects where you need to maintain multiple versions in production.
  • Highly organized and predictable.

Disadvantages:

  • Too complex for modern web apps with Continuous Delivery (CD).
  • Merging back and forth between branches can be tedious.
  • Historical history becomes cluttered with merge commits.

4. GitHub Flow

GitHub Flow is a simplified, lightweight alternative to Gitflow. It is the standard for teams that practice Continuous Deployment.

Graphic Representation

main (always deployable)feature/PR

Description

Anything in the main branch is always deployable. To add a new feature, you create a branch, push it, open a PR, and merge it back into main after it's reviewed and tested.

  • Complexity: ⭐⭐ (Low)
  • Best For: SaaS products, web applications, and teams with fast deployment cycles.

Advantages:

  • Perfect for Continuous Integration and Continuous Deployment (CI/CD).
  • Extremely simple and fast.
  • Keeps the mental model clean for developers.

Disadvantages:

  • Doesn't support multiple versions of a product in production.
  • Requires very strong automated testing to ensure main stays stable.

5. GitLab Flow

GitLab Flow bridges the gap between GitHub Flow and Gitflow by adding Environment Branches or Release Branches.

Graphic Representation

mainstagingproduction

Description

In GitLab Flow, main contains the "ideal" state of the code. When code is ready for testing, it's merged into staging. When ready for users, it's merged into production.

  • Complexity: ⭐⭐⭐ (Medium)
  • Best For: Teams that need a clear distinction between development, testing, and production environments.

6. Forking Workflow

The Forking Workflow is the gold standard for Open Source projects. Instead of one central repo, every developer has their own server-side repository.

Graphic Representation

Official RepoUser ForkPull Request

Description

Developers "fork" the official repository to create their own copy. They push changes to their fork and then submit a Pull Request to the official repository.

  • Complexity: ⭐⭐⭐⭐ (Medium-High)
  • Best For: Open source projects and large organizations with strict security/access controls.

7. Trunk-Based Development

Trunk-Based Development is an extreme version of the Feature Branch workflow where developers merge small updates to the "trunk" (main) very frequently—often several times a day.

Graphic Representation

trunk (main)

Description

To prevent breaking the trunk, developers rely on Feature Flags (toggling features off until they are ready) and rigorous automated testing.

  • Complexity: ⭐⭐⭐⭐⭐ (High infrastructure, Low Git complexity)
  • Best For: High-performing engineering teams (e.g., Google, Netflix, Facebook).

Comparison Summary

WorkflowComplexityBest ForMain Focus
CentralizedLowSolo / Tiny TeamsSimplicity
Feature BranchLow-MediumMost TeamsCollaboration
GitflowHighVersioned SoftwareRelease Control
GitHub FlowLowWeb Apps / SaaSSpeed / CD
ForkingMedium-HighOpen SourceSecurity / Access
Trunk-BasedHighElite DevOps TeamsIntegration Speed

Choosing the Right Workflow

  • Modern Web Startups: Use GitHub Flow. It’s fast, simple, and encourages high-quality PRs.
  • Enterprise with Legacy Cycles: Use Gitflow. It provides the structure needed for months-long release cycles.
  • Open Source: Use Forking. It allows anyone to contribute without having write access to your code.
  • High-Velocity Scale: Use Trunk-Based Development. It requires the most investment in testing but offers the highest engineering throughput.