The Hook (The "Byte-Sized" Intro)
It's Wednesday. Your team is shipping v2.0 โ six months of work, 47 PRs, new billing system, redesigned dashboard, and API v2. The CEO is watching. Marketing has a launch post ready. If this goes wrong, it goes wrong publicly. This case study walks through a well-orchestrated big release using Git โ from code freeze to celebration.
๐ Case Study: Orchestrating a Major Release
A fictional but realistic scenario demonstrating how Git workflows, branch strategies, and team coordination come together for a high-stakes release.
Conceptual Clarity
Release timeline:
| Day | Phase | Git Action |
|---|---|---|
| Monday (T-2) | Code freeze | Create release/2.0 branch |
| Monday-Tuesday | Stabilize | Only fixes merged to release/2.0 |
| Tuesday PM | QA sign-off | Tag v2.0.0-rc1 |
| Wednesday 10am | Deploy staging | Deploy RC to staging |
| Wednesday 11am | Smoke tests | Verify critical paths |
| Wednesday 12pm | Go/No-Go | Team decision |
| Wednesday 1pm | Deploy production | Tag v2.0.0, deploy |
| Wednesday 2pm | Monitor | Watch error rates |
| Wednesday EOD | Announce | Release notes, marketing |
Roles:
| Role | Responsibility |
|---|---|
| Release captain | Coordinates the release, makes Go/No-Go |
| On-call engineer | Monitors production post-deploy |
| QA | Validates staging |
| Comms | Release notes, announcements |
Real-Life Analogy
A big release is like a rocket launch. There's a countdown (timeline), a mission control team (roles), a Go/No-Go decision, and a plan for if things go wrong (rollback). You don't wing it โ every step is choreographed.
Visual Architecture
The Full Walkthrough
# โโโ Monday: Code Freeze โโโ
git checkout main
git checkout -b release/2.0
git push origin release/2.0
# Announce: "release/2.0 is branched. Only fixes go to this branch."
# โโโ Monday-Tuesday: Stabilize โโโ
# Fix found during testing:
git checkout -b fix/billing-rounding release/2.0
git commit -m "fix(billing): correct rounding to 2 decimal places"
git push origin fix/billing-rounding
# PR โ merge to release/2.0 (NOT main)
# โโโ Tuesday PM: Release Candidate โโโ
git checkout release/2.0
git tag v2.0.0-rc1
git push origin v2.0.0-rc1
# Deploy RC to staging environment
# โโโ Wednesday: Go/No-Go โโโ
# Checklist:
# โ
All smoke tests pass on staging
# โ
No P0/P1 bugs open
# โ
Performance metrics within bounds
# โ
Rollback plan verified
# โ
On-call engineer briefed
# Decision: GO โ
# โโโ Wednesday: Deploy Production โโโ
git checkout release/2.0
git tag v2.0.0
git push origin v2.0.0
# CI/CD deploys v2.0.0 to production
# โโโ Post-deploy: Monitor โโโ
# Watch error rates for 2 hours
# If issues: rollback to v1.9.x tag
# โโโ After release: Merge back to main โโโ
git checkout main
git merge release/2.0
git push origin main
# Now main has all release fixes
# โโโ Generate release notes โโโ
git log --oneline v1.9.0..v2.0.0 > RELEASE_NOTES.mdKey Takeaways
- Code freeze on a release branch โ only fixes, no new features.
- Release candidate tags (RC) enable QA on a frozen codebase.
- Go/No-Go checklist prevents launching with known issues.
- Merge back to main after release โ don't let main diverge.
Interview Prep
-
Q: How do you manage a major release with Git? A: Create a release branch (code freeze), stabilize with fixes only, tag a release candidate for staging, run a Go/No-Go checklist, tag the final release for production, monitor post-deploy, and merge the release branch back to main.
-
Q: What is a release candidate (RC)? A: A tagged version (e.g.,
v2.0.0-rc1) deployed to staging for final testing. If issues are found, fixes go to the release branch and a new RC is created. When the RC passes all checks, it becomes the final release. -
Q: What is a Go/No-Go decision? A: A formal team decision before deploying to production. It checks: all tests pass, no critical bugs, performance is acceptable, rollback is ready, and on-call is briefed. Any "No-Go" item blocks the release.