diff --git a/CLAUDE.md b/CLAUDE.md index 3f72eec..f6bc4c7 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -400,3 +400,100 @@ git rebase -i HEAD~2 If you're writing a commit message that says "fixed typo from previous commit", you should have rebased instead. + +--- + +## Part 6: Branching Strategy - One Feature Per Branch + +### The Workflow + +**Each phase/feature gets its own branch:** + +``` +main + └─ feature/03-design-polish (Phase 03) + └─ feature/04-workout-modification (Phase 04, branched from 03) + └─ feature/05-exercise-encyclopedia (Phase 05, branched from 04) +``` + +### Step-by-Step + +#### 1. Work on Phase 03 +```bash +git checkout -b feature/03-design-polish +# ... do all Phase 03 work ... +# Multiple commits, testing, refinement +git push origin feature/03-design-polish +``` + +#### 2. When Phase 03 is Done → Create PR +```bash +# Create PR: feature/03-design-polish → main +# Get code review, merge when approved +# This becomes the baseline for Phase 04 +``` + +#### 3. Start Phase 04 (NEW BRANCH from Phase 03) +```bash +# First, make sure local is up-to-date +git checkout feature/03-design-polish +git pull origin feature/03-design-polish + +# Create new branch FROM the current feature +git checkout -b feature/04-workout-modification + +# Now do all Phase 04 work on this new branch +# ... commits for 04-01, 04-02, 04-03, etc ... +git push origin feature/04-workout-modification +``` + +#### 4. When Phase 04 is Done → Rebase Before PR +```bash +# Make sure feature/03 is merged to main +git fetch origin + +# Rebase Phase 04 onto main (to get clean history) +git rebase origin/main feature/04-workout-modification + +# Force-push (since we're rebasing) +git push -f origin feature/04-workout-modification + +# Create PR: feature/04-workout-modification → main +``` + +### Why This Matters + +- ✅ **Cleaner history** — Each phase is separate +- ✅ **Easier reviews** — PRs are focused on one phase +- ✅ **Better testing** — Each phase tested independently +- ✅ **Easy rollback** — Remove one phase without touching others +- ✅ **Work in parallel** — Different agents can work on different phases + +### Current Situation + +We've mixed Phase 03 and 04 in `feature/03-design-polish`. Going forward: + +1. **Merge feature/03-design-polish → main** (code review, then merge) +2. **Create feature/04-workout-modification** from main +3. Move/cherry-pick Phase 04 commits to new branch (or just continue from here) +4. **Create feature/05-exercise-encyclopedia** from feature/04 when 04 is done + +### Rebase Chain Example + +```bash +# After 03 is merged and 04 starts: +git checkout feature/04-workout-modification +git rebase origin/main # Rebase 04 onto latest main + +# After 04 is merged and 05 starts: +git checkout feature/05-exercise-encyclopedia +git rebase origin/main # Always rebase new features onto main +``` + +### Rule of Thumb + +- **One feature per branch** +- **Each branch is independent** +- **Rebase onto main before PR** +- **No "feature/03-design-polish" commits after it's merged** +