See Git clearly.
3-way Git merge and Git tools for VS Code — and editors compatible with the same extension API.
Resolve merge conflicts from real Git index stages (base / ours / theirs), not just <<<<<<< markers. Includes file history, blame, compare, and Git actions from the editor context menu.
Features
- True 3-way merge — built from Git stages
:1:/:2:/:3: - Three-pane editor — Local · Result · Repository with scroll sync and change-type colors
- Magic resolve (✦) — auto-resolve trivial identical conflicts
- GitView workspace — desktop-IDE-style Git tool window: widget, changes, commit, branches, log, diff, temporary work, hosted review
- Git History tab — commit log, branch filter, inline diff preview
- Git context menu — history, compare, blame, rollback, stage, commit, remote ops, branches, stash, merge, rebase
- Hosted review — GitHub and GitLab PR/MR list, create PR/MR, filters, line comments, merge/squash/rebase, timeline
- Keyboard-first — F7 / Shift+F7, Alt+↑↓, Alt+1/2/3, Ctrl+Enter
- Theme-aware — uses VS Code CSS variables; supports light, dark, and high-contrast themes
Requirements
| Requirement | Notes |
|---|---|
| VS Code 1.85+ | Or a compatible fork on the same extension API |
| Git on PATH | Extension shells out to the git CLI |
| Trusted workspace | Git operations need workspace trust |
Security & trust
GitView can modify files and Git state in the workspace you open. Only enable it where you trust the folder.
- Workspace trust required for Git writes (docs)
- No telemetry — no usage or repository data sent to external product services
- Local Git only — shells out to your
gitCLI and existing credentials
Full detail (what can change the repo, recovery, path safety): Security & trust guide.
Reporting a vulnerability: see SECURITY.md — please do not open a public issue.
Installation
# Marketplace (after publish)
code --install-extension gitview.gitview
# Local VSIX
pnpm install && pnpm run package
code --install-extension gitview-<version>.vsix
More options (Open VSX, forks): Installation guide.
Quick start
- Open a trusted Git workspace.
- Command Palette → GitView: Open Git workspace (or the activity-bar icon).
- During a merge: Explorer → right-click conflicted file → Git → Resolve conflict.
- Accept sides / edit Result → Apply. Context menu Git also covers history, blame, and remotes.
See Getting started.
Editor compatibility
| Editor | Install source | Notes |
|---|---|---|
| VS Code | Marketplace | Primary target |
| Compatible editors and forks | Open VSX or VSIX | Requires support for the declared engines.vscode API |
No Microsoft-proprietary APIs. UI colors use --vscode-* host variables.
Settings
All legacy-compatible keys remain under gitView.* — open Settings and search GitView.
| Setting | Default | Description |
|---|---|---|
mergeEngine |
threeWay |
Git stages vs worktree markers only |
autoStageOnResolved |
true |
git add after Apply |
confirmDestructiveActions |
true |
Confirm discard / history rewrite |
updateStrategy |
merge |
Pull: merge · rebase · ff_only |
gitExecutablePath |
null |
Custom Git binary; null = PATH |
Full list: Settings reference · package.json → contributes.configuration.
Extension API
GitView exposes a versioned API for other VS Code extensions. Integrations can register hosted-review providers, add namespaced webview protocol handlers, and observe repository refreshes without importing internal modules.
import * as vscode from "vscode";
import type { GitViewExtensionApi } from "gitview";
const extension = vscode.extensions.getExtension<GitViewExtensionApi>(
"gitview.gitview",
);
const api = await extension?.activate();
if (api?.apiVersion === 1) {
const disposable = api.onDidRefresh(({ repoSnapshot }) => {
console.log(repoSnapshot.repositories.length);
});
context.subscriptions.push(disposable);
}
See the Extension API reference for provider and protocol-extension contracts and compatibility rules.
Documentation
| Section | Audience |
|---|---|
| Guide | Install, first use, features |
| Reference | Settings, commands, shortcuts, protocol |
| Contribute | Local setup & architecture |
| Maintainers | Quality standard, product specs & coverage matrix |
Full index: docs/README.md.
Development
pnpm install
pnpm run quality # complete pull-request quality gate
pnpm run check:architecture # dependency direction + purity + cycles
pnpm run check:docs # local documentation links
pnpm run typecheck # host + webview TypeScript
pnpm run lint # oxlint
pnpm run build # webview + extension
pnpm run check:package # public declarations + VSIX contents
pnpm run watch # parallel dev watchers
pnpm run test:unit # Vitest
pnpm run test:coverage # coverage thresholds (CI gate)
pnpm run test:int # @vscode/test-electron
pnpm run test:e2e # Playwright webview smoke
pnpm run package # build + bundle budget + VSIX
CI (.github/workflows/ci.yml): quality (architecture, typecheck, lint, unit+coverage, build, bundle, package contract) · e2e · integration. Release tags rerun this workflow before GitHub Release creation.
Quality policy: docs/maintainers/quality-standard.md. Coverage matrix: docs/maintainers/coverage-matrix.md. Release steps: RELEASE.md.
Launch configs:
- Run Extension (Merge Conflicts) →
test-conflict-repo(mid-merge; resolve conflicts) - Run Extension (Clean Git Menu) →
test-clean-repo(stash, commit, branch, remotes)
pnpm run test:setup # conflict fixture only
pnpm run test:setup:clean # clean + conflict fixtures
Publishing
Changelog is generated from Conventional Commits at release time (same idea as Vue / Antfu projects):
pnpm run changelog:preview # dry-run since last tag
pnpm release # bump + CHANGELOG.md + tag v* + push
Tag push reruns CI, creates generated GitHub Release notes, and attaches the packaged VSIX. Publish to the extension registries with:
pnpm run package
pnpm exec vsce login <publisher-id>
pnpm exec vsce publish
# Open VSX:
pnpm exec ovsx publish gitview-<version>.vsix -p <OVSX_TOKEN>
Full checklist: RELEASE.md. Commit style: CONTRIBUTING.md.
Contributing
Start with CONTRIBUTING.md for the architecture tour and test commands. Participation is governed by our Code of Conduct.
Architectural boundaries are enforced in CI by pnpm run check:architecture
(layering, dependency cycles, core/ purity, the Git subprocess choke point).
Run pnpm run quality before opening a pull request.
License
MIT — see LICENSE.