Tired of squinting at VS Code’s stacked merge editor?
** MergeForge** brings a JetBrains-style three-pane conflict resolver to VS Code and Cursor — and pairs it with an AI assistant that actually reads your repository before it suggests a fix.
We’ve all been there.
You’re halfway through a rebase. Git stops. Twelve files are conflicted. You open one in VS Code… and get that familiar stacked layout: Incoming, Current, and a result pane that somehow still feels like a puzzle with half the pieces missing.
If you ever used WebStorm or IntelliJ, you know how good merge tools can feel:
In VS Code land, that flow never quite arrived. You click Accept Current, Accept Incoming, Accept Both, and hope nothing important got flattened. Word-level diffs? Authorship? A clear “who wrote this chunk?” signal? Often missing when you need them most.
And when AI entered the chat, a lot of tools treated conflicts like isolated text blobs:
“Here are the
<<<<<<<
markers. Good luck.”
But real merges need context. What was the branch trying to do? What does the surrounding file look like? Who touched this last? Without that, “AI resolve” is just confident guessing.
I wanted the JetBrains merge experience — inside VS Code and Cursor — with an assistant that behaves more like a careful teammate than a slot machine.
So I built it.
** MergeForge** is an open-source VS Code / Cursor extension that turns conflicted files into a proper three-pane visual merge.
Layout:
| Left | Center | Right |
|---|---|---|
| Yours (local) | ||
| Result (editable, seeded from the merge base) | ||
| Theirs (incoming) |
Panes scroll together. Chunks connect with bands. Gutter controls let you accept, ignore, or blend sides without fighting the UI. When you’re done, Apply writes the result and stages it with git.
If you prefer Cursor, you’re covered too. The editor works the same; for AI features you plug in your own provider key (Cursor doesn’t expose its built-in models to extensions).
Install it from the marketplace or Open VSX:
Or search “MergeForge” in the Extensions view.
Then, on a conflicted file:
Your version, the editable result, and theirs — side by side, scroll-synced, with »
/ «
accept, ×
ignore, connector bands, word-level diffs, and full Cmd/Ctrl+Z undo.
Handy extras:
Explain conflicts, resolve them into the result pane, or Fix all (safe mechanical merges first, model only on the red chunks). The model can use read-only tools — open files, search code, inspect history, look up symbols — and you see live ⚙
activity so nothing is a black box.
Works with:
Keys live in VS Code secret storage. Nothing hits git until you hit Apply. Unhappy with an AI edit? Undo that chunk like any other change.
Every conflict side can show who last shaped it (GitHub avatars when available, offline-safe initials otherwise). Flip to a two-lane history timeline of the commits that produced the merge. Around the editor: a Conflicts dialog with progress, status-bar merge cluster, next-file loop after Apply, crash-safety snapshots, and correct left/right mapping during rebases and cherry-picks.
MergeForge is TypeScript end to end:
git merge-file
outputThe correctness bar matters: where git merges cleanly, MergeForge aims to match git byte for byte. There’s also a replay eval for the AI pipeline so prompt changes can be regression-checked against real historical merges.
git clone https://github.com/ognjenmarcheta/merge-forge.git
cd merge-forge
pnpm install
pnpm test
pnpm run watch # then F5 to launch the Extension Development Host
MergeForge is MIT-licensed and fully open source.
Repo: github.com/ognjenmarcheta/merge-forge
If it saves you even one painful rebase:
First-time contributors: the README has a harness (dev/harness.html
) so you can poke the UI in a browser without launching a full extension host. There’s also a script that spins up throwaway conflicted repos for every conflict shape.
node scripts/make-conflict-repo.mjs
node scripts/make-conflict-repo.mjs --rebase
| Link | For |
|---|---|
Next time git yells CONFLICT (content)
, open the file and forge the branches back into one piece.
What’s the worst merge conflict you’ve ever had to untangle — and what should MergeForge add next: better multi-file orchestration, more keyboard power-user flows, or deeper AI “why did this conflict?” narratives?
Drop a comment. I read them all.