Workflows
Release Branch Workflow
Explain when to cut a release branch, when to freeze features, and how to flow fixes back to main.
- Teams turning commands into repeatable routines
- Readers who need sequencing, branch, and sync discipline
- Basic understanding of fetch, pull, push, and branches
- A sense of how and why branches diverge
- Copying a workflow without checking branch state
- Choosing the wrong integration path on shared branches
Citations & Further Reading
- Git Branching Branching Workflows [Book]
- Git merge [Official]
- Git branch [Official]
What you will learn
- Understand the core purpose of Release Branch Workflow
- Master the basic usage and common options of Release Branch Workflow
- Explain when to cut a release branch, when to freeze features, and how to flow fixes back to main.
- Understand key concepts: Where this workflow fits
- Know when to use this feature and when to avoid it
Start with a problem
Your team is collaborating on a project, branches are growing, merges are becoming more frequent — but there's no stable collaboration rhythm. Everyone syncs code their own way, and conflicts are piling up.
Where this workflow fits
main
2.02.1
develop
D1D2D3
release/2.2.0
R1R2
hotfix/login-timeout
H1
Release branches are useful when the team needs a stable lane for test, packaging, and release-only fixes while main keeps moving.
Suggested sequence
1. cut a release branch from a stable mainline
git switch main
git pull --ff-only
git switch -c release/2.4.0
2. freeze features and accept only release-related fixes
That usually means bug fixes, config adjustments, docs, and packaging changes only.
3. merge the final release fixes back into main
git switch main
git merge release/2.4.0
Why this order is safer
Release work becomes easier when "prepare this version" is separated from "continue building new work."
Common mistakes
- continuing to add features after cutting the release branch
- fixing release-only issues without flowing them back to main
- leaving release branches alive far beyond the release window
Try it yourself
- Practice the release-branch-workflow command in a test repository and observe state changes before and after
- Experiment with different options and compare the output differences
- Simulate a real scenario where you would need to use this, and walk through the full process
Further reading
Keep going on the same topic: