| name | merge |
| description | Branch merging and conflict resolution patterns.
Use when merging feature branches, handling conflicts, or cleaning up worktrees.
Trigger with "merge branch", "resolve conflicts", "cleanup worktree".
|
| model | haiku |
| allowed-tools | Bash, Read |
Merge - Branch Management
Patterns for merging worker branches and handling conflicts.
CRITICAL: Always kill the worker terminal BEFORE merging. See @references/terminal-cleanup.md
Standard Merge Flow
ISSUE_ID="ISSUE-ID"
TABZ_API="http://localhost:8129"
TOKEN=$(cat /tmp/tabz-auth-token)
AGENT_ID=$(curl -s "$TABZ_API/api/agents" | jq -r --arg id "$ISSUE_ID" \
'.data[] | select(.name == $id) | .id')
[ -n "$AGENT_ID" ] && curl -s -X DELETE "$TABZ_API/api/agents/$AGENT_ID" \
-H "X-Auth-Token: $TOKEN"
git checkout main
git pull
git merge "feature/$ISSUE_ID" --no-edit
git worktree remove ".worktrees/$ISSUE_ID" --force
git branch -d "feature/$ISSUE_ID"
bd sync
git push
One-Command Alternative
For full cleanup with checkpoints, capture, and terminal kill:
./plugins/conductor/scripts/finalize-issue.sh "$ISSUE_ID"
Conflict Detection
git merge --no-commit --no-ff "feature/$ISSUE_ID"
git merge --abort
If conflicts exist, git merge will fail with conflict markers.
Conflict Resolution
Don't auto-resolve. Report conflicts for manual resolution:
git diff --name-only --diff-filter=U
git diff --check
Manual Resolution Steps
- Navigate to worktree:
cd .worktrees/ISSUE-ID
- Open conflicting files
- Resolve conflicts (remove markers, choose correct code)
- Stage:
git add .
- Commit:
git commit
- Re-run cleanup
Merge Strategies
Fast-Forward (Clean history)
git merge --ff-only "feature/$ISSUE_ID"
Only works if main hasn't changed.
No-FF (Always create merge commit)
git merge --no-ff "feature/$ISSUE_ID"
Creates merge commit even if fast-forward possible.
Squash (Single commit)
git merge --squash "feature/$ISSUE_ID"
git commit -m "feat: description (ISSUE-ID)"
Combines all commits into one.
Default: Use --no-edit for automatic merge commit message.
Worktree Cleanup
git worktree remove ".worktrees/ISSUE-ID" --force
git worktree list
git worktree prune
Branch Cleanup
git branch -d "feature/ISSUE-ID"
git branch -D "feature/ISSUE-ID"
git push origin --delete "feature/ISSUE-ID"
Batch Operations
git branch --merged main | grep "feature/"
git branch --merged main | grep "feature/" | xargs git branch -d
git worktree list | grep -v "$(pwd)$"
Error Handling
| Error | Action |
|---|
| Merge conflict | Stop, report files, require manual resolution |
| Branch not found | Skip branch deletion |
| Worktree not found | Skip worktree removal |
| Not on main | Checkout main first |
| Uncommitted changes | Stash or warn |
| TabzChrome not running | Skip terminal kill, continue with merge |
| No auth token | Skip terminal kill, continue with merge |
Safety Checks
Before merging:
- Verify issue is closed
- Kill worker terminal via TabzChrome API (see @references/terminal-cleanup.md)
- Verify branch exists
- Check for conflicts first
After merging:
- Verify merge succeeded
- Run any CI checks
- Sync beads
- Push to remote