🇬🇧 English • 🇩🇪 Deutsch • 🇪🇸 Español • 🇫🇷 Français • 🇯🇵 日本語 • 🇰🇷 한국어 • 🇵🇱 Polski • 🇧🇷 Português • 🇵🇹 Português • 🇷🇺 Русский • 🇨🇳 简体中文 • 🇹🇼 繁體中文
The best Git features from PyCharm, VS Code, and Visual Studio IDE.
A focused commit panel, readable branch graph, shelf workflow, and merge tooling for developers who want powerful IDE Git inside VS Code.
IntelliGit brings the best Git workflow ideas from PyCharm, VS Code, and Visual Studio IDE into one VS Code extension: a real commit panel, a readable branch graph, branch actions where the history is, shelf-style parking for unfinished work, and merge-conflict tools that do not make you rebuild context from terminal output.
It does not try to replace Git. It gives the daily Git work a better cockpit.
VS Code is fast and flexible, but Git work often ends up split across the Source Control view, terminal commands, diff tabs, branch pickers, and third-party graph extensions. That is fine for small changes. It gets tiring when you are shaping commits, checking history, moving branches, or cleaning up before a push.
IntelliGit pulls those workflows into one JetBrains-inspired surface:
- Build clean commits from a focused file tree with staging, rollback, amend, commit, and commit-and-push.
- Browse history in a visual commit graph with branch lanes, search, filters, metadata, and changed files.
- Act on branches and commits from the graph instead of jumping back to the command line.
- Park unfinished work with a shelf-style stash workflow.
- Handle risky history operations with availability rules and confirmations.
- Open conflicts in IntelliGit's native merge flow, VS Code, or an optional JetBrains merge tool.
The commit panel gives you a file tree, selective staging, diff-on-click, rollback, shelve, amend, commit, and commit-and-push in one place. It is built for making intentional commits, not just dumping everything into git commit -am.
The bottom panel combines branch list, commit graph, and commit details. Select a commit to see metadata and changed files. Filter by branch or search by text/hash. Use the same surface to checkout, rebase, merge, update, push, rename, delete, or create branches from commits.
Advanced actions are available where you need them: cherry-pick, create patch, checkout revision, reset current branch, revert, undo commit, edit commit message, drop commit, interactive rebase, new branch, and new tag. Destructive or history-rewriting actions are guarded by context, pushed/merge-commit checks, and confirmations.
Need to switch context before a change is ready? Use the Shelf tab to stash full or partial work, then apply, pop, or delete it later. It feels closer to the JetBrains shelf workflow than raw stash juggling.
IntelliGit detects merge conflicts, lets you open conflict sessions, accept yours/theirs, refresh the conflict tree, and optionally launch a JetBrains IDE merge tool. If no external tool is configured, it falls back to the native editor flow.
IntelliGit localizes command names, settings, host notifications, prompts, errors, and webview UI strings. Supported languages: English, German, Spanish, French, Japanese, Korean, Polish, Portuguese (Brazil), Portuguese (Portugal), Russian, Simplified Chinese, and Traditional Chinese.
- Stage by section, folder, or file.
- Open diffs from the file tree.
- Roll back selected files.
- Group by directory.
- Show diff previews.
- Expand or collapse the tree.
- Commit, commit and push, or amend.
- Shelve full or partial changes.
- Apply, pop, or delete shelved entries.
- Three-pane layout: branch column, commit graph/list, and commit details.
- Canvas-based lane graph with pagination for large histories.
- Text/hash search.
- Branch filtering.
- Changed files, file stats, and commit metadata.
- Workspace changed-file badge in the activity bar.
| Action | Applies To |
|---|---|
| Checkout | Local, Remote |
| New Branch from... | Current, Local, Remote |
| Checkout and Rebase onto Current | Local, Remote |
| Rebase Current onto Selected | Local, Remote |
| Merge into Current | Local, Remote |
| Update | Current, Local |
| Push | Current, Local |
| Rename... | Current, Local |
| Delete | Local, Remote |
- Copy Revision Number
- Create Patch
- Cherry-Pick
- Checkout Revision
- Reset Current Branch to Here
- Revert Commit
- Undo Commit
- Edit Commit Message
- Drop Commit
- Interactively Rebase from Here
- New Branch
- New Tag
- Install IntelliGit.
- Open a Git repository in VS Code.
- Open IntelliGit from the activity bar.
- Use the
Committab to stage files and commit. - Open the bottom IntelliGit panel to inspect history, filter branches, and act on commits.
Search for IntelliGit in VS Code Extensions, or install from:
- VS Code
1.96.0or later - Git installed and available on
PATH
Configure IntelliGit from VS Code Settings or settings.json.
IntelliGit can open merge conflicts in a JetBrains IDE merge tool such as PyCharm, IntelliJ IDEA, or WebStorm.
- Open VS Code Settings and search for
IntelliGit: JetBrains Merge Tool Path. - Set
intelligit.jetbrainsMergeTool.pathto your JetBrains app path. - On macOS, you can paste the
.apppath directly; IntelliGit resolves the internal executable. - Enable
intelligit.jetbrainsMergeTool.preferExternalif you want IntelliGit to try JetBrains first.
macOS examples:
/Applications/PyCharm.app/Applications/IntelliJ IDEA.app/Applications/WebStorm.app/Users/<your-user>/Applications/PyCharm.app
Windows examples:
C:\\Program Files\\JetBrains\\PyCharm 2025.1\\bin\\pycharm64.exeC:\\Program Files\\JetBrains\\IntelliJ IDEA 2025.1\\bin\\idea64.exeC:\\Program Files\\JetBrains\\WebStorm 2025.1\\bin\\webstorm64.exe
Helpful command:
- Run
IntelliGit: Detect JetBrains Merge Toolfrom the Command Palette to auto-detect installed JetBrains IDEs and save the path.
bun install
bun run build
bun run watch
bun run lint
bun run typecheck
bun run test
bun run formatUse the IntelliGit TSDoc standard in docs/tsdocs/TSDOC.md when documenting exported or boundary-facing TypeScript/TSX symbols. Prefer comments that capture contracts, invariants, side effects, and trust boundaries over comments that repeat TypeScript types. The rollout plan is tracked in docs/tsdocs/codex-tsdoc-rollout-plan.md.
Contributor and reviewer checklist:
- Update TSDoc in the same change that adds or changes exported/boundary-facing TypeScript or TSX symbols.
- Reject comments that only restate types, use vague verbs such as "handles" or "returns", or describe behavior that is no longer true.
- Keep the source documentation ratchet enabled; do not weaken lint enforcement to land undocumented exports.
- During release maintenance, scan for stale
@todo,TODO,FIXME,@deprecated, and@remarksnotes insrcanddocs.
bun install
bun run build
bun run package
code --install-extension intelligit-*.vsix# Run all unit and integration tests.
bun run test
# Watch mode.
bun run test -- --watch
# Run a specific test file.
bun run test -- tests/unit/gitops.test.ts
# Run tests matching a pattern.
bun run test -- -t "CommitPanelApp"GitExecutor (simple-git wrapper)
|
GitOps (operations layer)
|
View Providers (extension host orchestration)
|
Webviews (React apps for commit panel and commit graph)
Data flow highlights:
- Commit selection in the graph requests commit details from the extension host and updates the detail pane.
- Branch selection filters the graph and clears stale commit detail state.
- Commit panel file count updates the activity badge.
- Refresh reloads branch state, history, and commit panel data together.
| Component | Technology |
|---|---|
| Extension host | TypeScript, ES2022 |
| Git operations | simple-git v3 |
| Webviews | React 18 |
| Graph rendering | HTML5 Canvas |
| Bundler | esbuild |
| Package manager | Bun |
| Testing | Vitest |
| Linting | ESLint |
| Formatting | Prettier |

{ // JetBrains IDE binary path/command or a macOS .app bundle path. // Examples: "", "pycharm", "idea", "webstorm", "/Applications/PyCharm.app", // "C:\\Program Files\\JetBrains\\PyCharm 2025.1\\bin\\pycharm64.exe" "intelligit.jetbrainsMergeTool.path": "", // Prefer JetBrains merge tool for conflicts, falling back to IntelliGit/VS Code if unavailable. "intelligit.jetbrainsMergeTool.preferExternal": false, // Enable tooltips inside IntelliGit webviews. "intelligit.tooltips.enabled": true, // Open IntelliGit as a unified editor tab when Show Git Log is invoked. "intelligit.undockableWindow": false, // Icon style used in IntelliGit panels: "standard" or "color". "intelligit.icons": "standard", // Commit panel position inside the undocked/tabbed IntelliGit window: "auto", "left", or "right". "intelligit.commitWindowPosition": "auto", }