Use when a git merge or rebase reports conflicts and the operation is in progress.
Scanned 8/31/2026
Install to Claude Code
npx -y skills add romiluz13/cc10x --skill resolving-merge-conflicts --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Resolving Merge Conflicts?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/romiluz13-resolving-merge-conflicts)More formats (shields.io, HTML) on the badges page.
---
name: resolving-merge-conflicts
description: |
Use when a git merge or rebase reports conflicts and the operation is in progress.
allowed-tools: Read Bash Grep Glob
user-invocable: false
---
<!-- Upstream: github.com/mattpocock/skills @ e9fcdf95 (skills/engineering/resolving-merge-conflicts)
Classification: ADAPTED (cc10x frontmatter + output conventions; 5-step body is Matt's). -->
# Resolving Merge Conflicts
Work through an in-progress git merge or rebase conflict **hunk by hunk**, resolving each by intent traced to each side's primary source. **Never `--abort`.** Always resolve; `--abort` throws away work and hides the real incompatibility.
## The 5 steps
### 1. See the current state
Check git status, the conflicting files, and the conflict markers:
```bash
git status
git diff --name-only --diff-filter=U # the unmerged paths
```
Read each conflicting file's conflict markers (`<<<<<<<`, `=======`, `>>>>>>>`) to see exactly what's contested. Know whether you're in a merge (`MERGE_HEAD` set) or a rebase (`rebase-merge/` or `rebase-apply/` present in `.git/`).
### 2. Find the primary sources for each side
For each conflict hunk, understand **why** each change was made and what its original intent was — don't just pick the bigger diff. Read:
- The commit messages on both sides (`git log --oneline -5 -- <file>` for each side)
- The PRs or issues/tickets the commits reference
- The surrounding code to confirm what each side was trying to achieve
### 3. Resolve each hunk by intent
For each hunk:
- **Preserve both intents where possible** — the two sides usually want different things; merge both.
- **Where incompatible**, pick the one matching the merge's stated goal (the feature, the fix, the branch's purpose) — never pick one side blind — and **note the trade-off** in the commit message: what was given up and why.
- **Never invent new behavior.** A conflict resolution is not a place to add new code neither side wrote.
### 4. Run the project's automated checks
Discover the project's checks and run them in order — typically typecheck, then tests, then format:
```bash
# node: npx tsc --noEmit (or per package.json scripts)
# python: ruff check . && python -m pytest -q
# go: go build ./... && go test ./...
```
Fix anything the merge broke. A conflict resolution that breaks the build is not a resolution.
### 5. Finish the merge/rebase
Stage everything and commit:
```bash
git add <resolved-files>
git commit # merge: completes the merge commit
# rebase: git rebase --continue (repeat for each conflicted commit until done)
```
If rebasing, continue the rebase process until ALL commits are rebased.
## Before you commit
- **Never leave conflict markers in a committed file.** `grep -rn '^<<<<<<< \|^=======$\|^>>>>>>> ' .` must return nothing before you commit.

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!