The "GitHub Flow" Workflow

GitHub Flow is a lightweight, continuous delivery-focused Git workflow that emphasizes simplicity and speed by centering on a single, core branch.

It maintains a single, perpetually stable main (or master) branch that always reflects the latest deployable code, effectively treating main as production. For all work, developers create short-lived, descriptive topic branches off of main (e.g., add-user-login or fix-api-bug).

All integration, review, and testing is performed through a Pull Request (PR); once approved, the topic branch is merged into main and immediately deployed to production, ensuring a smooth and rapid release cycle.

How GitHub Flow Works

GitHub Flow – Overview

Base Branches

  • main (Root Branch): This is the single source of truth and the only base branch. In GitHub Flow, the main branch is always stable, tested, and deployable. It reflects the latest code that is currently in production or ready to be deployed instantly. There are no separate staging or production branches.

Topic Branches

  • feature/*: This category covers all development work: new features, refactors, and bug fixes.

Work is integrated back into main after a Pull Request (PR) review. The PR is the central mechanism for testing and approval.

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 ✌️

GitHub 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.
GitHub Flow in Tower – Overview