Skip to content

Gitflow

Two long-lived branches:

BranchEnvironmentAccess
mainProductionProtected — PR required
developHors-prod (dev)Protected — PR required
develop
│
├── feat/my-feature ← branch from develop
│ │
│ └── PR → develop ← code review + CI
│
├── (PR merge)
│
└── release/vX.Y.Z ← branch from develop when ready
│
└── PR → main ← final QA, then tag
TypePatternExample
Featurefeat/<short-name>feat/redis-metrics
Bug fixfix/<short-name>fix/kafka-timeout
Release preprelease/vX.Y.Zrelease/v0.6.0
Hotfixhotfix/<short-name>hotfix/nil-pointer
EventCIDev deployProd deploy
Push to feat/*, fix/*Tests + vet——
PR to developTests + vet——
Push to developTests + vetdev image—
Push to release/**Tests + vetrc-<sha> image—
Push to mainTests + vet——
Tag gateway/vX.Y.ZTests—vX.Y.Z image + GitHub Release
Tag relay/vX.Y.ZTests—vX.Y.Z image + GitHub Release
Helm chart change on main——Helm chart published to GitHub Pages
Terminal window
# Start a feature
git checkout develop && git pull
git checkout -b feat/my-feature
# Open PR to develop
gh pr create --base develop --title "feat: ..."
# Create a release branch
git checkout develop && git pull
git checkout -b release/v0.6.0
# Open PR to main
gh pr create --base main --title "release: v0.6.0"

Hotfixes branch from main and are merged back to both main and develop:

Terminal window
git checkout main && git pull
git checkout -b hotfix/critical-fix
# fix, commit, PR → main
gh pr create --base main --title "fix: critical fix"
# after merge: back-merge to develop
git checkout develop && git pull
git merge main
git push origin develop