Installs into .claude/skills of the current project.
Are you the author of Git Conflict Resolve?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/duc01226-git-conflict-resolve)
---
name: git-conflict-resolve
description: '[Git] Use when resolving git merge, cherry-pick, rebase or stash-apply conflicts, with backup and analysis.'
---
> Codex compatibility note:
> - Invoke repository skills with `$skill-name` in Codex; this mirrored copy rewrites legacy Claude `/skill-name` references.
> - Host-native execution: Codex runs a skill by loading its `SKILL.md` instructions and executing the required steps with available tools. No separate `Skill` tool is required; a loaded skill is already activated.
> - Source vs execution: prefer the registered `.agents/skills/<name>/SKILL.md` for Codex execution. `.claude/**` remains the canonical authoring source; reading it for a registry or source inspection does not switch this session to Claude Code.
> - Capability check: interpret Claude tool names through the active host before declaring a blocker. Continue when Codex can perform the required operation; stop and ask only when the actual capability is unavailable, naming the step and evidence. Host-native execution is not a protocol deviation and needs no extra approval.
> - Task tracker mandate: BEFORE executing any workflow or skill step, create/update task tracking for all steps and keep it synchronized as progress changes.
> - Use ask user tool to ask user.
> - Ignore Claude-specific mode-switch instructions when they appear.
> - Strict execution contract: when a user explicitly invokes a skill, execute that skill protocol as written.
> - Subagent authorization: when a skill is user-invoked or AI-detected and its protocol requires subagents, that skill activation authorizes use of the required `spawn_agent` subagent(s) for that task.
> - Do not skip, reorder, or merge protocol steps unless the user explicitly approves the deviation first.
> - For workflow skills, steps follow the guided contract in `$start-workflow` (gate steps fixed; other steps may flex with a logged reason); report step-by-step evidence.
> - If a required step/tool cannot run in this environment, stop and ask the user before adapting.
## Quick Summary
**Goal:** Resolve git merge/cherry-pick/rebase conflicts with backup, analysis, and structured reporting.
**Workflow:**
1. **Backup** — Create safety backup of current state
2. **Analyze** — Identify conflict types and affected files
3. **Resolve** — Apply resolution strategy per conflict
4. **Report** — Generate conflict resolution report
**Key Rules:**
- Always create backup before resolving conflicts
- Prefer preserving both sides' intent over arbitrary choice
- Generate resolution report for audit trail
**Be skeptical. Apply critical thinking, sequential thinking. Every claim needs traced proof, confidence percentages (Idea should be more than 80%).**
## Purpose
Systematically resolve git conflicts (merge, cherry-pick, rebase) with:
1. Backup of all conflicted files before resolution
2. Per-file conflict analysis with root cause explanation
3. Resolution with documented rationale
4. Comprehensive report generation
## Variables
OPERATION: auto-detect (cherry-pick, merge, rebase) from git state
REPORT_PATH: `tmp/reports/conflict-resolution-{date}-{operation}-{source}.md`
BACKUP_PATH: `tmp/conflict-backups-{date}/`
## Workflow
### Step 1: Detect conflict state
```bash
# Detect operation type
git status # Check for "cherry-pick in progress", "merge in progress", etc.
# List all conflicted files
git diff --name-only --diff-filter=U # Unmerged files (both modified)
git status --short | grep "^DU\|^UD\|^UU\|^AA\|^DD" # All conflict types
```
**Which side is which.** The flags `--ours`/`--theirs`, and this skill's *target*/*source*, map by operation. Merge: ours = the branch you are on (target), theirs = the branch merged in (source). Cherry-pick and rebase: ours = the branch being built on (for a rebase, the upstream you replay onto), theirs = the commit being applied. Stash apply/pop: ours = the current branch, theirs = the stashed changes. A stash conflict shows no in-progress marker in `git status`, so take the operation from the caller. Choose what to keep from what each side holds, never from the flag name.
Classify each conflict:
- **DU (Deleted by us):** File exists on source but not on target branch
- **UD (Deleted by them):** File exists on target but deleted by source
- **UU (Both modified):** Both branches modified the same file
- **AA (Both added):** Both branches added a file at the same path
- **DD (Both deleted):** Both branches deleted the file
### Step 2: Create backup files
**MANDATORY before any resolution.**
```bash
mkdir -p {BACKUP_PATH}
# For each conflicted file, copy WITH conflict markers preserved
cp <conflicted-file> {BACKUP_PATH}/<filename>.conflict
```
Create a task tracking item for each conflicted file PLUS report and review tasks.
### Step 3: Analyze each conflict (per file)
For each conflicted file, perform this analysis:
#### 3a. Understand the conflict type
- **DU/UD (deleted by one side):** Check if the file was introduced in a commit not present on the target branch. Read the file content from the source commit to understand what it provides.
- **UU (both modified):** Read the conflict markers. Identify what each side changed and why.
#### 3b. Read both versions
```bash
# For UU conflicts: read the file with conflict markers
# Look for <<<<<<< HEAD / ======= / >>>>>>> markers
# For DU conflicts: get the source version
git show <source-commit>:<file-path>
# Optionally extract clean versions
git show HEAD:<file-path> > {BACKUP_PATH}/<filename>.ours
git show <source-commit>:<file-path> > {BACKUP_PATH}/<filename>.theirs
```
#### 3c. Analyze dependencies
- **Check callers:** Do other files reference methods/classes in this file? Are caller names compatible?
- **Check constructor/DI:** Does the resolution require new dependencies?
- **Check cross-file consistency:** Will the resolution break other files?
#### 3d. Determine resolution strategy
| Conflict Pattern | Resolution Strategy |
| ------------------------------------------------------ | -------------------------------------------------- |
| DU: File needed by feature | Accept theirs (add the file) |
| DU: File not needed | Keep ours (skip the file) |
| UU: Non-overlapping changes | Merge both (keep all changes) |
| UU: Overlapping, source modifies methods not on target | Keep ours if methods don't exist on target |
| UU: Overlapping, both modify same method | Manual merge with careful analysis |
| UU: Schema/snapshot files | Accept theirs for new entities, merge for modified |
### Step 4: Resolve each conflict
Apply the determined strategy:
```bash
# Accept theirs (source version)
git checkout --theirs <file> && git add <file>
# Keep ours (target version)
git checkout --ours <file> && git add <file>
# Manual merge: Edit the file to remove conflict markers, then:
git add <file>
```
For manual merges:
1. Remove `<<<<<<< HEAD`, `=======`, `>>>>>>> <commit>` markers
2. Keep the correct content from each side
3. Verify no leftover conflict markers: `git diff --check`
### Step 5: Verify resolution
```bash
# Check no unmerged files remain
git diff --name-only --diff-filter=U
# Check no leftover conflict markers
git diff --check
# Review overall status
git status
```
### Step 6: Hand off or complete under Git authority
Determine the owning caller and its authorized operation before any continuation that changes history. When invoked by `$pull-request` or another caller requiring review before commit, return the resolved/staged candidate, operation markers, exact scope, HEAD and pending continuation; leave HEAD unchanged until the caller’s review/commit gate. Conflict-resolution authorization alone never overrides that gate.
Standalone: confirm the existing user authorization covers the exact history-changing operation; if absent, report the ready candidate and request the missing authorization. Route a merge commit through `$commit` and its candidate-review/receipt contract, never raw `git commit`. For an authorized cherry-pick/rebase continuation, satisfy the owning review/candidate authority first; use a noninteractive editor (`GIT_EDITOR=true git cherry-pick --continue` or `GIT_EDITOR=true git rebase --continue` on POSIX; equivalent process environment on Windows), inspect exit status and operation markers after each continuation, and stop to resolve any new conflicts. Do not claim completion while an operation marker remains. Stash conflicts have no continue command; report resolved state without inventing one.
### Step 7: Generate report
Create a comprehensive report at `{REPORT_PATH}` with:
1. **Header:** Date, source commit/branch, target branch, result commit
2. **Summary:** Total conflicts, categories, overall risk
3. **Per-file details:**
- File path
- Conflict type (DU/UU/etc.)
- Root cause (why the conflict occurred)
- Resolution chosen (accept theirs/keep ours/manual merge)
- Rationale (why this resolution was chosen)
- Risk level (Low/Medium/High)
4. **Summary table:** All files with conflict type, resolution, risk
5. **Root cause analysis:** Common patterns across conflicts
6. **Recommendations:** Follow-up actions, build verification, etc.
### Step 8: Final review
- Verify report is complete and accurate
- Check that all backup files exist
- Confirm build passes (if applicable)
- Flag any Medium/High risk resolutions for user attention
## Resolution Decision Framework
### When to "Accept Theirs" (source version)
- File is NEW (DU) and required by the feature being cherry-picked/merged
- File contains schema/config additions needed by new entities
- Source has strictly more content (e.g., empty class → populated class)
### When to "Keep Ours" (target version)
- Source modifies methods that don't exist on target (added by uncommitted prerequisite)
- Source renames methods/types that target callers still reference by old names
- Changes are not required for the feature being brought in
### When to "Manual Merge"
- Both sides have legitimate changes that need to coexist
- Schema files where both add new entries (keep both)
- Config files where both add new sections
### Risk Assessment
| Risk | Criteria | Action |
| ---------- | ---------------------------------------------- | -------------------------------------------- |
| **Low** | New file, no existing code affected | Proceed |
| **Medium** | Method changes, caller compatibility uncertain | Flag in report, recommend build verification |
| **High** | Breaking changes, cross-service impact | Require user confirmation before proceeding |
## Notes
- Always create backup files BEFORE any resolution
- Understand the root cause first, then resolve — never force-resolve blind. — why: a guessed resolution silently drops or duplicates legitimate changes
- For complex conflicts (>3 conflict regions in one file), extract both clean versions for side-by-side analysis
- Check for prerequisite commits: if a cherry-pick modifies files from prior commits not on target, note this in the report
- Use `git diff <commit>^..<commit> -- <file>` to see the actual diff of a specific commit (not the full file state)
---
> **[IMPORTANT]** Use task tracking to break ALL work into small tasks BEFORE starting — including tasks for each file read. This prevents context loss from long files. For simple tasks, AI MUST ATTENTION ask user whether to skip.
**Prerequisites:** **MUST ATTENTION READ** before executing:
<!-- PROTOCOL-GUIDES:START -->
> **Protocol guides** — A hook delivers each protocol's full text when this skill loads. If a protocol's text is not in your context, read its file below before you act on it.
- `understand-code-first` — Read and trace the target and existing patterns before changing code; planning or editing code → .claude/skills/shared/protocols/understand-code-first.md
<!-- PROTOCOL-GUIDES:END -->
<!-- SYNC:understand-code-first:reminder -->
**IMPORTANT MUST ATTENTION** search 3+ existing patterns and read code/conventions BEFORE any modification or explanation. The code graph is optional advice for high-risk blast radius (a hint that may be stale), never a requirement.
<!-- /SYNC:understand-code-first:reminder -->
<!-- SYNC:evidence-based-reasoning:reminder -->
**IMPORTANT MUST ATTENTION** cite `file:line` evidence for every claim; never speculate. Confidence >80% to act, <60% = do NOT recommend; "not enough evidence" is valid output.
<!-- /SYNC:evidence-based-reasoning:reminder -->
## Closing Reminders
**IMPORTANT MUST ATTENTION Goal:** Resolve git merge/cherry-pick/rebase conflicts with backup, analysis, and structured reporting.
**Protocols in force (concise digest of the SYNC/shared blocks this skill carries):**
- **Understand Code First:** search 3+ patterns and read code before any modification.
- **MANDATORY IMPORTANT MUST ATTENTION** break work into small todo tasks using task tracking BEFORE starting
- **MANDATORY IMPORTANT MUST ATTENTION** search codebase for 3+ similar patterns before creating new code
- **MANDATORY IMPORTANT MUST ATTENTION** cite `file:line` evidence for every claim (confidence >80% to act)
- **MANDATORY IMPORTANT MUST ATTENTION** add a final review todo task to verify work quality
**[TASK-PLANNING]** Before acting, analyze task scope and systematically break it into small todo tasks and sub-tasks using task tracking.