| Topic | Description | Guide |
|---|---|---|
| ------- | ------------- | ------- |
| interactive-amend | Worktree-based amend+rebase loop for earlier/multiple commits | interactive-amend.md |
| soft-reset-amend | Soft-reset top N commits and selectively re-commit (simpler than worktree rebase) | soft-reset-amend.md |
Analyze staged/unstaged changes and recommend whether to split into multiple commits.
When analyzing multiple commits, recommend squashing as well as splitting.
test: A test + test: B test (tests for the same feature) → squash into 1fix: typo A + fix: typo B (same review feedback) → squash into 1test: add unit testswip: in progress + feat: complete → squash into one feattest + chore + feat separate### Recommendation: Squash 2 commits → 1
**Before** (2 commits):
- 441b966a test(dt): OIDC auth, proxy, SSO tests
- e2b6503a test(dt): OIDC route tests (login, callback, me)
**After** (1 commit):
- test(dt): add OIDC auth unit tests
**Reasoning**: Same type (test), same feature (OIDC auth), agent loop split
When ARGUMENTS specify a range (e.g., "since main", "last 3 commits", "PR #N"), analyze all changes in that range — both committed and uncommitted.
# Range specified (e.g., "X changes since main")
git log --oneline <base>..HEAD -- <path> # committed changes
git diff <base>..HEAD --stat -- <path> # committed diff
git diff HEAD --stat -- <path> # uncommitted diff
The analysis must cover committed commits (squash/split candidates) + uncommitted changes (new commit candidates) as a single unified view. Do not analyze only uncommitted changes when a range is specified.
When no range is specified, default to staged + unstaged changes only.
# Check staged changes
git diff --cached --stat
git diff --cached --name-only
# Check unstaged changes
git diff --stat
git status
Group changed files by:
Look for natural split points:
Provide specific recommendations:
## Analysis Results
### Changed Files (N files)
- src/api/... (3 files) - API endpoints
- src/components/... (2 files) - UI components
- tests/... (2 files) - Tests
### Recommendation: Split into N commits
**Commit 1**: feat: add user profile API
- src/api/user.ts
- src/api/types.ts
- tests/api/user.test.ts
**Commit 2**: feat: add profile UI component
- src/components/Profile.tsx
- src/components/Profile.css
- tests/components/Profile.test.tsx
### Reasoning
- API and UI can function independently
- Each can be reviewed by different reviewers
# Unstage all
git reset HEAD
# Stage first commit files
git add src/api/ tests/api/
git commit -m "feat: add user profile API"
# Stage second commit files
git add src/components/ tests/components/
git commit -m "feat: add profile UI component"
| Files | Directories | Recommendation |
|---|---|---|
| ------- | ------------- | ---------------- |
| 1-5 | 1-2 | Usually single commit |
| 5-10 | 2-3 | Review for split |
| 10+ | 4+ | Likely needs split |
| Combination | Split? |
|---|---|
| ------------- | -------- |
| feat + feat (unrelated) | ✅ Yes |
| feat + related test | ❌ No |
| fix + unrelated refactor | ✅ Yes |
| refactor + style (same files) | ❌ No |
| chore(deps) + feat | ✅ Yes |
Analysis results should include:
共 3 个版本