






















VS Code extension to detect and prevent Git merge conflicts early.
Continuously monitors your branches and warns you about conflicts — before you pull, push, or open a PR.
Stop getting surprised by merge conflicts.
✅ Detect conflicts before they happen — scans your branches continuously in the background
✅ See exact files & lines at risk — know what will break before you pull or open a PR
✅ Reduce painful merge debugging — get warnings early, fix issues while they're small
✅ Zero side effects — simulations never touch your working tree or create commits
⭐⭐⭐⭐⭐ "Extremely helpful tool for resolving merge conflicts — no more manual effort needed. It makes the whole process smooth and fast."
⭐⭐⭐⭐⭐ "Finally, a useful tool to prevent cursing your colleagues at every 'git push'."
⭐⭐⭐⭐⭐ "This is a very useful tool and saves a lot of time for me."
Rated 5.0/5 on the VS Code Marketplace · Built to solve real-world Git pain.
MergeGuard simulates merges in the background — no files are changed, no commits are created.
Your Branch ─────┐
├──► merge simulation ──► Conflict Report
Target Branch ───┘
It uses git merge-tree to compare your branch against targets and reports exactly which files and line ranges would conflict. Everything runs in Git's object database — your working tree is never touched.
That's it — MergeGuard auto-detects your branches and starts scanning.
merge-tree --write-tree). Older Git versions are supported with approximate conflict detection via a diff-based fallback.Cmd/Ctrl+Shift+P → MergeGuard: Configure Tracked BranchesMergeGuard integrates with popular SCM platforms to discover open PRs/MRs and enrich conflict analysis with team context.
Authentication uses VS Code's built-in GitHub authentication. When PR scanning is enabled, you'll be prompted to sign in via OAuth — no manual token needed.
Run MergeGuard: Set GitLab PAT and enter a Personal Access Token with read_api scope. The token is stored securely in VS Code's SecretStorage.
Run MergeGuard: Set Bitbucket Credentials and provide your Atlassian username and an App Password with pullrequest:read scope.
Run MergeGuard: Set Azure DevOps PAT and enter a Personal Access Token with Code (Read) scope.
Security note: All credentials are stored in VS Code's SecretStorage (OS keychain). Tokens are never written to settings files, logged, or included in error messages.
| Command | Description |
|---|---|
MergeGuard: Scan Current Branch for Conflicts |
Run an immediate scan against all tracked branches |
MergeGuard: Scan All Tracked Branches |
Full scan of all configured branches |
MergeGuard: Configure Tracked Branches |
Pick which branches to monitor via multi-select |
MergeGuard: Toggle Auto-Scan |
Enable or disable automatic scanning on save |
MergeGuard: Preview Conflict |
Open a diff preview of merged content |
MergeGuard: Three-Way Diff |
Compare base↔ours and base↔theirs side-by-side |
MergeGuard: Open Risk Dashboard |
Open the interactive risk dashboard webview |
MergeGuard: Suggest Merge Order |
Show the optimal branch merge sequence |
MergeGuard: Sort Conflicts |
Sort tree view by severity, file name, or branch |
MergeGuard: Toggle High-Risk Filter |
Show only high-risk conflicts in the tree view |
MergeGuard: Dismiss Conflict |
Dismiss a conflict from the tree (won't re-notify) |
| Setting | Default | Description |
|---|---|---|
mergeguard.trackedBranches |
["main", "master", "develop"] |
Branches to scan for conflicts |
mergeguard.autoScanOnSave |
true |
Scan automatically when files are saved |
mergeguard.autoScanInterval |
300 |
Seconds between periodic background scans (0 = disabled) |
mergeguard.debounceDelay |
2000 |
Milliseconds to debounce save-triggered scans |
mergeguard.showInlineDecorations |
true |
Show conflict highlights in the editor |
mergeguard.showInProblemsPanel |
true |
Show conflicts in the Problems panel |
mergeguard.showCodeLens |
true |
Show CodeLens annotations above conflict regions |
mergeguard.notificationLevel |
"all" |
Notification level: all, high, badge, or silent |
mergeguard.riskThreshold |
"low" |
Minimum risk level to display (low, medium, high) |
mergeguard.scanOpenPRs |
true |
Scan branches from open PRs/MRs on connected SCM platforms |
mergeguard.showTeamActivity |
false |
Show team file activity from PR metadata |
mergeguard.includePaths |
[] |
Git root paths to include (empty = all) |
mergeguard.excludePaths |
[] |
Git root paths to exclude from scanning |
MergeGuard calculates a 0–100 risk score using five weighted components:
| Component | Weight | What it measures |
|---|---|---|
| Conflict count | 25% | Number of conflicting files |
| Line density | 20% | Total conflict line ranges relative to file count |
| Type severity | 20% | Severity of conflict types (delete > content > rename) |
| File criticality | 20% | Whether critical files are affected (package.json, CI configs, etc.) |
| Branch count | 15% | How many branches have conflicts |
| Feature | Merge Guard | git merge --no-commit |
GitLens | Git Graph |
|---|---|---|---|---|
| Non-destructive simulation | ✅ | ❌ (modifies worktree) | ❌ | ❌ |
| Continuous background scanning | ✅ | ❌ | ❌ | ❌ |
| Multi-branch analysis | ✅ | ❌ (one at a time) | ❌ | ❌ |
| Line-level conflict regions | ✅ | ✅ | ❌ | ❌ |
| Risk scoring | ✅ | ❌ | ❌ | ❌ |
| Interactive dashboard | ✅ | ❌ | ❌ | ❌ |
| SCM integration (GitHub, GitLab, …) | ✅ | ❌ | ✅ (GitHub) | ❌ |
| Merge order optimization | ✅ | ❌ | ❌ | ❌ |
| Zero dependencies | ✅ | ✅ | ❌ | ❌ |
| Price | Free | Free | Freemium | Free |
Measured on a MacBook Pro (M2, 16 GB) against real-world repositories:
| Repository | Files | Branches Scanned | Scan Time | Memory |
|---|---|---|---|---|
| Small (< 100 files) | 85 | 3 | ~180 ms | ~12 MB |
| Medium (500 files) | 520 | 5 | ~1.2 s | ~18 MB |
| Large (2 000 files) | 2100 | 4 | ~3.8 s | ~25 MB |
| Monorepo (5 000+ files) | 5300 | 3 | ~4.7 s | ~32 MB |
Activation time: < 200 ms (lazy-loaded dashboard, incremental scanning).
Incremental re-scan (no SHA changes): < 10 ms — cached results are reused instantly.
git --version in a terminal..git directory.git fetch to update remote-tracking branches.mergeguard.debounceDelay to reduce scan frequency.autoScanOnSave and scan manually when needed.includePaths / excludePaths to limit which git roots are scanned.mergeguard.scanOpenPRs is enabled (default: true).Q: Does MergeGuard modify my working tree or create commits?
A: No. MergeGuard uses git merge-tree --write-tree which runs entirely in Git's object database. No files are changed, no commits are created, and no branches are affected.
Q: How is this different from just running git merge --no-commit?
A: git merge --no-commit actually modifies your working tree and index, requiring cleanup. MergeGuard's simulation is completely side-effect-free and can run continuously in the background.
Q: What happens with an older version of Git?
A: MergeGuard automatically detects your Git version. If merge-tree --write-tree isn't available (Git < 2.38), it falls back to merge-base + diff --name-only for approximate conflict detection. Line-level precision is only available with Git 2.38+.
Q: Can I use MergeGuard with monorepos or multi-root workspaces?
A: Yes. MergeGuard auto-detects all Git repositories in your workspace. For multi-root setups, each git root gets its own independent scanner with results aggregated into a unified dashboard. Use includePaths and excludePaths settings to filter which roots are monitored.
Q: Does this work with remote branches?
A: Yes. MergeGuard resolves configured branch names against both local and remote-tracking branches (e.g., origin/main). You may need to git fetch periodically to keep remote refs up to date.
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
MIT — Sukanta Saha
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。