docs: add branching strategy - one feature per branch

- Each phase gets its own branch
- Branch from previous phase to inherit work
- Rebase onto main before creating PR
- Keeps history clean and reviews focused
This commit is contained in:
2026-03-02 08:56:32 +01:00
parent d3ccbf5c8c
commit bca4057d14
+97
View File
@@ -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**