Skip to content
Conflict engine

Deterministic conflict resolution. No guessing.

Every hunk runs through a classifier of pattern recognizers — 8 of them resolve deterministically on their own, each with its own confidence profile. Conflicts that carry no decision are resolved without you. The rest is surfaced with a full decision trace — never a black box.

See it resolve a conflict in one second

GitWand reads code semantics, not just lines — and picks the right resolution for you.

Before — raw conflict
<<<<<<< HEAD
const theme = 'dark'
=======
const theme = localStorage.getItem('theme') ?? 'dark'
>>>>>>> feature/settings
→
After — auto-resolved
const theme = localStorage.getItem('theme') ?? 'dark'
✓ confidence 97% · one_side_change · deterministic

8 auto-applied patterns, plus the generated-file pass.

8 deterministic patterns in the registry resolve on their own; the rest either propose a merge you confirm, are opt-in, or hand the hunk back with its trace. generated_file sits apart: it is not a registry pattern but a post-classification pass that rescues lockfiles and build output already classified as complex. The classifier never guesses; when it can't be certain, it stops.

same_changecertain

Both branches made the exact same edit.

⚡ Auto-resolved
one_side_changecertain

Only one branch touched this block.

⚡ Auto-resolved
delete_no_changecertain

One side deleted the block, the other left it untouched.

⚡ Auto-resolved
non_overlappinghigh

Additions at different positions in the block.

⚡ Auto-resolved
whitespace_onlyhigh

Same logic, different indentation or spacing.

⚡ Auto-resolved
reorder_onlyhigh

Same lines, different order.

⚡ Auto-resolved
insertion_at_boundaryhigh

New lines added at the edge of a hunk.

⚡ Auto-resolved
value_only_changehigh

A scalar value (version, timestamp, hash) updated on both sides — keeps the higher semver / later timestamp.

⚡ Auto-resolved
token_level_mergemedium

Both sides changed disjoint tokens on the same line — proposes a merge you confirm, never auto-applied.

○ Review needed
refactoring_aware_mergehigh

Rename/move detected and replayed across the conflict (opt-in).

○ Review needed
llm_proposedmedium

AI-proposed resolution, validated post-merge (opt-in).

○ Review needed
complexlow

Overlapping edits — surfaced with full classification trace.

○ Review needed
generated_filehigh

Path matches a generated-file glob (lockfile, minified bundle, dist/). Reclassified out of complex and resolved to theirs: the file will be regenerated.

⚡ Auto-resolved

Post-classification pass, not a classifier pattern.

Numbers, not adjectives.

Performance measured on an M-series chip with typical repositories.

249kops/sec
1 conflict · ~30 lines
40kops/sec
5 conflicts · ~140 lines
4.5kops/sec
50 conflicts · ~1350 lines
322tests
Engine · CLI · App — all passing
0
Hallucinations — fully deterministic

Released under the MIT License.