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-currentto identify current branch - •
git statusto 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
- •Search PR with
- •
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 commitwith descriptive message - •Conflicts: Parse
git diff --name-only --diff-filter=U
- •Clean merge:
- •
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 --cachedto review changes - •Check no conflict markers remain:
grep -r "<<<<<<< HEAD" - •
git add -Aand 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