From latestaiagents
Use this skill when resolving Git merge conflicts. Activate when the user mentions merge conflicts, conflicting changes, failed merges, "both modified", HEAD markers, conflict markers (<<<<<<<, =======, >>>>>>>), or asks how to resolve conflicts between branches. Also use when git merge or git rebase fails due to conflicts.
npx claudepluginhub latestaiagents/agent-skills --plugin skills-authoringThis skill uses the workspace's default tool permissions.
Resolve Git merge conflicts systematically and safely.
Resolves Git merge and rebase conflicts file-by-file using modern tooling. Activates for conflicted merges, rebases, PRs unable to merge, or diverged branches. Supports --ours, --theirs, auto-push.
Resolves Git merge and rebase conflicts efficiently using bulk strategies like `git checkout --theirs/--ours` over manual conflict marker editing. Activates on merge/rebase conflicts.
Analyzes git merge conflicts by type and context, proposes automated/manual resolutions, and validates fixes. Handles content, structural, semantic, and formatting issues.
Share bugs, ideas, or general feedback.
Resolve Git merge conflicts systematically and safely.
git merge or git rebase fails with conflicts<<<<<<<, =======, >>>>>>>) in filesgit status shows "both modified" files# See all conflicted files
git status
# See the full diff of conflicts
git diff --name-only --diff-filter=U
List all conflicted files and categorize them:
For each conflicted file, understand:
# See what YOUR branch changed
git diff HEAD~1 -- <file>
# See what the OTHER branch changed
git diff MERGE_HEAD~1 -- <file>
# See common ancestor
git show :1:<file> # Base version
git show :2:<file> # Ours (current branch)
git show :3:<file> # Theirs (merging branch)
For simple conflicts (different functionality):
For overlapping conflicts (same code, different changes):
For delete/modify conflicts:
# Mark as resolved
git add <resolved-file>
# Verify no remaining conflicts
git diff --check
# Run tests before completing
npm test # or your test command
# Complete the merge
git commit # or git rebase --continue
<<<<<<< HEAD
function processUser(user) {
validateUser(user);
=======
function processUser(user) {
logUserAccess(user);
>>>>>>> feature-branch
Resolution: Keep both - they're independent additions
function processUser(user) {
validateUser(user);
logUserAccess(user);
<<<<<<< HEAD
const result = items.filter(x => x.active).map(x => x.name);
=======
const result = items.reduce((acc, x) => x.active ? [...acc, x.name] : acc, []);
>>>>>>> feature-branch
Resolution: Choose based on readability/performance needs. The filter().map() is clearer.
<<<<<<< HEAD
const API_URL = 'https://api.prod.example.com';
=======
const API_URL = 'https://api.staging.example.com';
>>>>>>> feature-branch
Resolution: This is environment-specific. Use environment variables instead:
const API_URL = process.env.API_URL || 'https://api.prod.example.com';
# Use a merge tool (if configured)
git mergetool
# Abort if things go wrong
git merge --abort
git rebase --abort
# Accept all of one side (use carefully)
git checkout --ours <file> # Keep your version
git checkout --theirs <file> # Keep their version
# If you messed up the resolution
git checkout -m <file> # Restore conflict markers
# If you committed a bad resolution
git reset --soft HEAD~1 # Undo commit, keep changes
# Then resolve again
# Nuclear option: start over
git merge --abort # or git rebase --abort