Loading...
Loading...
Branch naming conventions, Git Flow vs trunk-based development, feature branch lifecycle, and release strategies. Reference when creating branches, planning releases, or choosing a branching model.
npx skill4agent add claude-code-community-ireland/claude-code-resources branch-strategy| Prefix | Purpose | Example |
|---|---|---|
| New functionality or capability | |
| Bug fixes for existing behavior | |
| Urgent production fixes | |
| Release preparation and stabilization | |
| Maintenance, dependencies, tooling | |
| Documentation-only changes | |
| Code restructuring without behavior change | |
| Adding or fixing tests only | |
| Exploratory work, not intended for merge | |
feature/add-user-searchfeature/Add_User_Searchfix/cart-totalfix/the-bug-where-cart-total-shows-wrong-amountfeature/PROJ-1234-user-avatar-uploadfeature/search-apifeature/anthonys-search-workfix/login-redirect-loopfix/bugfix/stufffeature/PROJ-1234-user-avatar-upload
fix/GH-567-null-pointer-on-empty-cart
hotfix/INC-89-payment-gateway-timeoutmainmain ─────●─────●─────●─────●─────●─────●─────
\ / \ / \ /
●─● ●─● ●
(feature) (fix) (feature)mainmainmain# Create branch from main
git checkout main && git pull
git checkout -b feature/PROJ-123-add-search
# Work in small increments, commit frequently
git add -p && git commit -m "Add search index configuration"
git add -p && git commit -m "Implement basic search query endpoint"
# Rebase onto main before merging
git fetch origin && git rebase origin/main
# Merge via PR (squash or merge commit per team convention)
# Delete branch immediately after mergemain ─────●──────────────────●──────────────
| |
develop ─────●────●────●────●───●────●─────────
\ / \ / | /
feature ●● ●● release ●
\ /
●─●| Branch | Lifetime | Merges Into | Purpose |
|---|---|---|---|
| Permanent | -- | Production-ready code, tagged releases |
| Permanent | | Integration branch for features |
| Temporary | | New work in progress |
| Temporary | | Release stabilization |
| Temporary | | Urgent production fixes |
# 1. Create release branch from develop
git checkout develop && git pull
git checkout -b release/2.4.0
# 2. Only bug fixes, documentation, and release prep on this branch
# No new features allowed
# 3. When stable, merge to main and tag
git checkout main && git merge --no-ff release/2.4.0
git tag -a v2.4.0 -m "Release 2.4.0"
# 4. Back-merge to develop
git checkout develop && git merge --no-ff release/2.4.0
# 5. Delete release branch
git branch -d release/2.4.0# 1. Branch from main
git checkout main && git pull
git checkout -b hotfix/payment-null-pointer
# 2. Fix the issue, commit
# 3. Merge to both main and develop
git checkout main && git merge --no-ff hotfix/payment-null-pointer
git tag -a v2.4.1 -m "Hotfix: payment null pointer"
git checkout develop && git merge --no-ff hotfix/payment-null-pointer
# 4. Delete hotfix branch
git branch -d hotfix/payment-null-pointermainmainmainmainbranch_protection:
main:
required_reviews: 1 # At least one approval
dismiss_stale_reviews: true # Re-review after new pushes
require_status_checks: true # CI must pass
required_checks:
- build
- test
- lint
restrict_pushes: true # No direct pushes
require_linear_history: true # Squash or rebase only
include_administrators: true # Rules apply to everyone| Rule | | | | |
|---|---|---|---|---|
| Require PR | Yes | Yes | Yes | No |
| Required reviewers | 1-2 | 1 | 1-2 | 0 |
| Require CI pass | Yes | Yes | Yes | Optional |
| Allow force push | No | No | No | Yes (owner) |
| Allow deletion | No | No | After merge | Yes |
| Require signed commits | Recommended | Optional | Optional | No |
MAJOR.MINOR.PATCH
| | |
| | └── Bug fixes, no API changes
| └──────── New features, backward compatible
└────────────── Breaking changes2.4.0-alpha.1 # Alpha pre-release
2.4.0-beta.2 # Beta pre-release
2.4.0-rc.1 # Release candidate
2.4.0+build.1234 # Build metadata (ignored in precedence)# Annotated tag (preferred for releases)
git tag -a v2.4.0 -m "Release 2.4.0: Add user search, fix cart totals"
# Push tags to remote
git push origin v2.4.0
# Or push all tags
git push origin --tagsvv2.4.02.4.01. CREATE ── Branch from main/develop with proper prefix
2. DEVELOP ── Commit regularly, push daily
3. SYNC ── Rebase/merge from upstream regularly
4. REVIEW ── Open PR, request review
5. REVISE ── Address feedback, push updates
6. MERGE ── Squash or merge commit per convention
7. CLEANUP ── Delete branch locally and remotely# Option A: Rebase (cleaner history, use for personal branches)
git fetch origin
git rebase origin/main
# Option B: Merge (preserves history, use for shared branches)
git fetch origin
git merge origin/mainDo you deploy continuously to production?
├── Yes: Do you need PR-based code review?
│ ├── Yes ──► GitHub Flow
│ └── No ──► Trunk-Based Development
└── No: Do you maintain multiple release versions?
├── Yes ──► Git Flow
└── No: Do you have scheduled release cycles?
├── Yes ──► Git Flow (simplified)
└── No ──► GitHub Flow