Free — no signup required

GitHub Flow: Simple and Continuous

2 min read

For Web Applications That Deploy Frequently

GitFlow is overkill for many modern web applications where you deploy to production several times a day. Managing five branch types when your "release cycle" is measured in hours creates friction without adding value.

GitHub Flow is a vastly simpler strategy designed for continuous delivery. It was popularized by GitHub itself and is the default mental model for most SaaS teams today.

The complete ruleset — only six steps:

  1. Anything in the main branch is deployable. It must always be stable and production-ready.
  2. To work on anything — a feature, a bug fix, a documentation update — create a descriptively named branch off main (e.g., feature/login-page, fix/null-pointer-checkout).
  3. Commit your changes to that branch locally and push regularly to the remote server. This serves as both a backup and a progress signal to your team.
  4. When you want feedback, are stuck, or believe the work is complete, open a Pull Request (PR). A PR is a formal request to merge your branch into main, and it's the primary venue for code review.
  5. Once the PR is reviewed, approved, and passes automated checks (tests, linting, security scans), merge it into main.
  6. Deploy immediately after merging. Ideally, this is automated by your CI/CD pipeline.

There is no develop branch. There is no release branch. There is only main and short-lived feature branches. The simplicity is the point.

The implicit requirement: GitHub Flow only works if your main branch is protected by automated tests. If merging a PR can break production, the model collapses. You need a CI pipeline that runs your test suite on every PR before it can be merged. This is non-negotiable.

This is one of 18 chapters

Every chapter is free — Kubernetes, Terraform, SRE, distributed systems, and more — with fast daily review built in.

Sign up free