Merge
Merge branches intelligently by understanding feature context and resolving conflicts efficiently.
Context
- Current branch:!
git branch --show-current - Working tree status:!
git status --short - Target branch: $1
- Recent commits:!
git log --oneline -5
Workflow
- CONTEXT GATHERING:
- git branch --show-current to identify current branch - git status to ensure clean working tree - CRITICAL: Abort if uncommitted changes exist
- FEATURE ANALYSIS:
- Search PR with gh pr list --head <branch-name> - Get PR details with gh pr view <number> --json title,body,files - Use Task agents to gather context from PR/issue descriptions
- MERGE ATTEMPT:
- git fetch origin <branch-name> - git merge origin/<branch-name> --no-commit - Check status with git status --porcelain
- CONFLICT DETECTION:
- Clean merge: git commit with descriptive message - Conflicts: Parse git diff --name-only --diff-filter=U
- SMART RESOLUTION: For each conflicted file:
- Read file to understand conflict markers - Apply resolution based on context: - Feature additions: Keep both if non-overlapping - Bug fixes: Prefer incoming if fixing known issue - Refactors: Analyze intent and merge carefully - Use MultiEdit to resolve all conflicts - STOP: If >10 files conflicted, ask user
- VERIFICATION:
- git diff --cached to review changes - Check no conflict markers remain: grep -r "<<<<<<< HEAD" - git add -A and commit
Conflict Resolution by Type
- package.json: Merge dependencies, prefer higher versions
- Config files: Combine settings unless mutually exclusive
- Source code: Use PR/issue context to understand intent
- Tests: Keep all tests unless duplicates
- Imports: Merge all, deduplicate
Rules
- ALWAYS gather context before merging
- NEVER blindly accept theirs/ours without analysis
- ABORT if conflicts exceed 10 files
- Max 3 resolution attempts per file
- If stuck:
git merge --abortand report blockers