A cleaner 3-way merge conflict resolver for VS Code. Replaces the built-in merge UI with a focused side-by-side editor that makes conflicts quicker to scan and resolve.
Why
VS Code's built-in merge editor works, but it is dense, requires several clicks per block, and hides useful information behind menus. Git Resolve aims for the opposite: everything you need is on screen, one keypress away.
Features
Three-pane Monaco editor: Left (your branch) · Result · Right (incoming branch)
Per-block gutter actions: Accept one side, then combine or dismiss the other
Smart combine: LCS-based fuzzy merge that keeps shared lines once instead of duplicating them
Word-level diffs inside conflicting lines so you spot the real change fast
Minimap with resolution state per block
Keyboard first: F7 / Shift+F7 to navigate, Alt+← / Alt+→ to accept
Automatic discovery: CodeLens on each conflict block, status bar counter, editor title button, and an optional notification
Usage
When a file with <<<<<<< … ======= … >>>>>>> markers is opened, Git Resolve surfaces itself in several places:
A CodeLens above each conflict block: Open in Git Resolve
A status bar item (bottom-left) with the conflict count
A button in the editor title bar
A notification with a one-click open action
In the Source Control panel, right-click any file in the Merge Changes group → Open Merge Editor
Command palette: Git Resolve: Open Merge Editor
Once the editor is open: accept / combine / dismiss per block, then Apply merge to write the result back and close the panel.
Keyboard shortcuts
Key
Action
F7
Next conflict
Shift+F7
Previous conflict
Alt+←
Accept left on active conflict
Alt+→
Accept right on active conflict
Settings
Setting
Default
Description
gitResolve.autoOpen
false
Automatically open Git Resolve when a file with merge conflicts becomes active.
gitResolve.showNotification
true
Show a notification with a quick-open action when conflicts are detected.
Limitations (V1)
One file at a time — multi-file navigation across a merge set isn't wired yet
Diff3 base — the parser captures the ||||||| base section but the UI doesn't display it yet
Manual edits in Result made before all conflicts are resolved may be overwritten when you accept another block. Resolve all blocks first, edit after
Development
npm install
cd webview-ui && npm install && cd ..
# Build both sides
npm run package
cd webview-ui && npm run build && cd ..
# Launch the Extension Development Host
# (F5 in VS Code, or via the debugger)