Skip to content
Back to skills

Resolving Merge Conflicts

ASecurity

Use when a git merge or rebase reports conflicts and the operation is in progress.

  • 164 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added August 31, 2026
ai-agentspythongobashnodegit

Security analysis

A100/100

Scanned August 31, 2026

npx -y skills add romiluz13/cc10x --skill resolving-merge-conflicts --agent claude-code

Installs 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 with every re-scan.

Security grade badge for Resolving Merge Conflicts
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/romiluz13-resolving-merge-conflicts/badge)](https://www.skillsdirectory.com/skills/romiluz13-resolving-merge-conflicts)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.