MergeShip — Merge Conflict Resolver
A VS Code extension for resolving merge conflicts across git-based repos (GitHub / GitLab / Bitbucket — the provider is auto-detected from git remote). It ships files between branches, resolves conflicts to the branch you choose, vaults any code that would be overwritten, and builds your project with fixable error reports.
Features
1. Ship files between branches (develop → stage, or any names)
- Pick source and target branches (custom names supported, defaults
develop / stage).
- Add files by name, hit All to grab every differing file, or Remove to forget selected ones.
- Conflicts are resolved at line level — the source branch's side wins inside conflict blocks while the target branch's clean, non-conflicting changes are preserved.
- Switch direction any time with the ⇄ button — same buttons, same behavior, so syncing stage → develop is identical.
2. Sync latest / compare branches
- Every file in the list shows a "newest on source/target" badge (from last-commit dates), so you can see where the latest code lives before shipping.
- Ship in either direction to align branches.
3. Vanished Code Vault
- Automatically saves the old content of every file you overwrite while shipping (nothing can silently disappear).
- Manually capture the current file via the command palette.
- Browse saved snippets grouped by file (with branch + timestamp), View, Copy, Append to file, or Restore them back — one click.
4. Build project & fix errors
- Auto-detects Next.js, React, Express, NestJS, FastAPI, Flask, Django, .NET, Spring Boot (Maven/Gradle).
- Runs the correct build command, parses compiler errors (TS / C# / Java / Python), and pushes them to the Problems panel with click-to-jump.
- A dedicated panel shows the offending source line plus a suggested fix for common errors (TS2304, TS2307, CS0246,
cannot find symbol, ModuleNotFoundError, …).
Usage
Open a cloned git repo in VS Code. The MergeShip activity bar icon shows three views:
| View |
What it does |
| Ship Files |
Branch pickers, Add/All/Remove, Ship button |
| Vanished Code Vault |
View / Copy / Append / Restore captured code |
| Build & Fix |
Detect project, run build, browse errors + fixes |
Commands (Command Palette → MergeShip: …)
Ship files between branches
Sync latest from branch
Open Vanished Code Vault
Capture current file to Vault
Build project & fix errors
Resolve conflict markers in active editor — quickly resolve <<<<<<</=======/>>>>>>> blocks in the open file to the left or right side.
How shipping works
For each selected file:
git merge-base <source> <target> gives the common ancestor.
- A line-level three-way merge (diff3) is run: the target's non-conflicting changes are kept; real conflicts resolve to the source branch.
- The file is written to the working tree. If the working-tree copy has uncommitted changes you're asked before overwriting, and the old content is auto-saved to the Vault.
- Optional
mergeship.autoStageAfterShip runs git add on the shipped files.
- Binary files are copied byte-for-byte from the source branch (no text merge).
No commits are made automatically — everything lands in the working tree for review.
Settings
| Setting |
Default |
Meaning |
mergeship.defaultSourceBranch |
develop |
Default source branch |
mergeship.defaultTargetBranch |
stage |
Default target branch |
mergeship.autoStageAfterShip |
false |
git add shipped files |
mergeship.vaultMaxEntries |
500 |
Max vault entries per workspace |
mergeship.promptOnDirtyFile |
true |
Ask before overwriting dirty files |
Development
npm install
npm run watch # esbuild watch
npm run typecheck # tsc --noEmit
npm test # build + run unit/integration tests (uses throwaway git repos)
npm run package # build the .vsix
Press F5 in VS Code to launch the extension host for manual testing.
Tests
test/merge.test.ts spins up real fixture repos and verifies the three-way merge, binary handling, add/delete cases, and branch comparison. test/parse.test.ts covers the compiler-output parsers, and test/store.test.ts the vault store + suggestion engine.
Notes
- Works against any git remote (GitHub/GitLab/Bitbucket) via local git — no tokens or API keys needed.
- Dependencies required on PATH:
git, and for Build & Fix: node/npm, python, dotnet, or mvn/gradle depending on your project.
| |