Branch strategy
Skill peopleforrester/claude-dotfiles/skills/git/branch-strategy
Git branching strategies and workflows. Use when setting up a project's branching model, discussing Git workflow, or deciding between trunk-based and Git Flow approaches.From its SKILL.md
npx -y skills add peopleforrester/claude-dotfiles --skill branch-strategyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
7.1 KB, as published. Nobody here has run it
Branch Strategy Guide
Choose and implement the right Git branching strategy.
When to Use
- Setting up a new project's Git workflow
- Discussing branching strategies
- Deciding between trunk-based and feature branches
- Establishing team conventions
Strategy Comparison
| Strategy | Best For | Team Size | Release Frequency |
|---|---|---|---|
| Trunk-Based | Continuous deployment | Any | Daily/Hourly |
| GitHub Flow | Web apps, SaaS | Small-Medium | Daily/Weekly |
| Git Flow | Versioned releases | Medium-Large | Scheduled |
Trunk-Based Development
Overview
main ─────●─────●─────●─────●─────●─────●───→
│ │ │ │ │
└─●───┘ └─────●─────┘ └─●
(short-lived feature branches)
Characteristics
- Single main branch (
mainortrunk) - Short-lived feature branches (< 1 day)
- Merge to main frequently
- Feature flags for incomplete work
- Continuous integration required
Workflow
# Start feature
git checkout main
git pull
git checkout -b feat/add-login
# Work in small increments
git commit -m "feat: add login form"
git push -u origin feat/add-login
# Create PR same day
gh pr create --title "feat: add login form"
# Merge quickly (after review)
gh pr merge --squash
When to Use
- Experienced team with good CI/CD
- Continuous deployment
- Feature flags available
- High test coverage
GitHub Flow
Overview
main ─────●─────────────●─────────────●───→
│ │ │
└──●──●──●────┘ │
feature/login │
└──●──●──●────┘
feature/dashboard
Characteristics
mainis always deployable- Feature branches for all changes
- PRs required for merging
- Deploy from
mainafter merge
Workflow
# Start feature
git checkout main
git pull
git checkout -b feature/user-dashboard
# Develop with multiple commits
git commit -m "feat: add dashboard layout"
git commit -m "feat: add metrics widgets"
git commit -m "test: add dashboard tests"
git push -u origin feature/user-dashboard
# Create PR
gh pr create --title "feat: add user dashboard"
# After review, merge
gh pr merge --squash
# Deploy main
Branch Naming
feature/description # New features
fix/description # Bug fixes
docs/description # Documentation
refactor/description # Refactoring
test/description # Test additions
When to Use
- Web applications
- Continuous deployment
- Small to medium teams
- Simple release process
Git Flow
Overview
main ─────●───────────────────●───────→
│ │
develop ──●───●───●───●───●───●───●───●───→
│ │ │ │
└─●─●───┘ │ │
feature/a │ │
└─●─●───┘
release/1.0
Branches
| Branch | Purpose | Lifetime |
|---|---|---|
main | Production code | Permanent |
develop | Integration branch | Permanent |
feature/* | New features | Temporary |
release/* | Release preparation | Temporary |
hotfix/* | Production fixes | Temporary |
Workflow
# Start feature
git checkout develop
git checkout -b feature/payment-system
# Develop
git commit -m "feat: add payment form"
git push -u origin feature/payment-system
# Merge to develop (via PR)
gh pr create --base develop
# Start release
git checkout develop
git checkout -b release/1.0.0
# Finalize release
git checkout main
git merge release/1.0.0
git tag v1.0.0
git checkout develop
git merge release/1.0.0
# Hotfix
git checkout main
git checkout -b hotfix/security-patch
# ... fix ...
git checkout main
git merge hotfix/security-patch
git tag v1.0.1
git checkout develop
git merge hotfix/security-patch
When to Use
- Scheduled release cycles
- Multiple versions in production
- Larger teams
- QA/staging environments
Branch Naming Conventions
Format
<type>/<ticket>-<description>
Examples
feature/AUTH-123-oauth-login
fix/BUG-456-cart-calculation
hotfix/SEC-789-xss-vulnerability
release/1.2.0
docs/update-api-reference
Guidelines
- Use lowercase
- Use hyphens (not underscores)
- Include ticket number if applicable
- Keep description short but clear
Environment Branches
Setup
main → Production
staging → Staging environment
develop → Development environment
Promotion Flow
feature/* → develop → staging → main
↓ ↓ ↓
Dev Stage Prod
Automation
# Deploy on merge to specific branches
on:
push:
branches:
- main # Deploy to production
- staging # Deploy to staging
- develop # Deploy to development
Merge Strategies
Squash Merge
gh pr merge --squash
- Combines all commits into one
- Clean history
- Best for feature branches
Merge Commit
gh pr merge --merge
- Preserves all commits
- Creates merge commit
- Best for release branches
Rebase
gh pr merge --rebase
- Linear history
- Rewrites commits
- Best for small changes
Protected Branches
Recommended Settings
# main branch
- Require PR reviews: 1-2 reviewers
- Require status checks: CI must pass
- Require up-to-date branch
- No force pushes
- No deletions
# develop branch
- Require PR reviews: 1 reviewer
- Require status checks: CI must pass
Migration Guide
From Git Flow to Trunk-Based
- Implement feature flags
- Increase CI/CD coverage
- Shorten branch lifetimes gradually
- Remove
developbranch - Merge directly to
main
From No Strategy to GitHub Flow
- Protect
mainbranch - Require PRs for all changes
- Set up CI checks
- Train team on workflow
- Establish naming conventions
Decision Checklist
Choose Trunk-Based if:
- Deploy multiple times per day
- Have strong CI/CD
- Can use feature flags
- Team is experienced
Choose GitHub Flow if:
- Deploy daily to weekly
- Want simple workflow
- Don't need versioned releases
- Small to medium team
Choose Git Flow if:
- Have scheduled releases
- Need multiple versions
- Have QA process
- Larger team with roles