Strategies Overview
Strategy: none (Default)
All commits go directly to your current branch.Behavior
When to use
- Solo developer
- Simple projects with no code review
- Continuous deployment from main
- When you trust GSD’s atomic commits
Advantages
- ✅ Simplest workflow
- ✅ No branch management overhead
- ✅ Immediate deployment
Disadvantages
- ❌ No isolation between phases
- ❌ Harder to review work in chunks
- ❌ Rollback requires reverting commits
Strategy: phase
Creates a new branch for each phase, merges at phase completion.Behavior
When to use
- Team workflows with code review
- Want to review each phase before merging
- Need granular rollback capability
- CI/CD runs per-phase validation
Advantages
- ✅ Isolates each phase
- ✅ Easy code review (one phase = one PR)
- ✅ Granular rollback (delete branch)
- ✅ Clear phase boundaries in git history
Disadvantages
- ❌ More branch management
- ❌ Merge conflicts if main moves
- ❌ Requires manual PR creation
Strategy: milestone
Creates one branch for the entire milestone at the firstexecute-phase, all phases share it.
Behavior
When to use
- Release branches (v1.0, v2.0)
- Want one PR per version
- Milestone is a coherent unit
- Team reviews entire milestone together
Advantages
- ✅ Clean release workflow
- ✅ One PR per milestone
- ✅ All milestone work isolated
- ✅ Easy to deploy milestone to staging
Disadvantages
- ❌ Large PRs (many phases)
- ❌ Harder to review incrementally
- ❌ Rollback is all-or-nothing
Configuration
Via interactive settings
Via config file
Edit.planning/config.json:
Template variables
Branch Templates
Default templates
- Phase branch:
gsd/phase-01-user-authentication - Milestone branch:
gsd/v1.0-user-system
Custom templates
- Phase branch:
feature/user-authentication-phase-01 - Milestone branch:
release/v1.0
Merging Behavior
Phase strategy
At the start of next phase (or milestone completion):1
Checkout main
git checkout main2
Merge phase branch
git merge --no-ff gsd/phase-01-user-authentication3
Delete phase branch
git branch -d gsd/phase-01-user-authentication4
Create next phase branch
git checkout -b gsd/phase-02-profile-managementMilestone strategy
At/gsd:complete-milestone:
1
Offer squash merge
“Merge with history or squash all phase commits?”
- Squash (recommended): One commit for entire milestone
- History: All phase commits preserved
2
Checkout main
git checkout main3
Merge milestone branch
git merge --squash gsd/v1.0-user-system (if squash)orgit merge --no-ff gsd/v1.0-user-system (if history)4
Delete milestone branch
git branch -d gsd/v1.0-user-system- Squash merge (recommended)
- Merge with history
Working with PRs
Phase strategy workflow
Milestone strategy workflow
Common Patterns
Solo developer
Team with per-phase review
Release workflow
Best Practices
- none strategy
- phase strategy
- milestone strategy
Do:
- Trust GSD’s atomic commits
- Use for solo projects
- Deploy continuously
- Skip verification (
/gsd:verify-work) - Use on team projects requiring review
Troubleshooting
”Branch already exists”
You may have an orphaned branch:“Merge conflicts”
Main branch moved while you were working:“Switched strategies mid-milestone”
Changing strategies mid-milestone can leave orphaned branches:Integration with Other Features
Quick mode
Quick tasks respect branching strategy:- none: Commits to current branch
- phase/milestone: Commits to active GSD branch