intermediate

GitFlow basics

Understand long-lived develop, release, and hotfix branches and why many web teams now prefer simpler flows.

GitFlow uses long-lived branches with defined roles:

| Branch | Role | |--------|------| | `main` | Production-ready history | | `develop` | Integration branch for next release | | `feature/*` | Branch from develop, merge back | | `release/*` | Stabilize before production | | `hotfix/*` | Emergency fix from main |

It can fit scheduled releases and multiple supported versions, but many web teams find the overhead heavy when deploying continuously from main.

On interviews: name branch roles, then evaluate fit for release cadence, team size, and rollback — not popularity.

Common pitfalls: GitFlow by default on a team that ships daily; duplicate merges between develop and release; develop drifting far from main.

The trade-off is structured release lanes versus simplicity of trunk-based flows.

Checklist:

  • Know main, develop, release, hotfix roles.
  • Adopt only when release cadence warrants it.
  • Compare with trunk-based and feature flags.
  • Avoid ceremony without operational benefit.