Intellij git changelist
Organize git work in VS Code, Cursor, and other VS Code-based editors with changelists, a visual commit graph, inline blame, branch management, interactive rebase, and merge conflict tools.
Published by Pixelaters.
Features
Visual Commit Graph
A full commit history with colored branch lines (DAG). Lives in the bottom panel for quick access.
- Colored branch lines showing merges, forks, and parallel development
- Branch and tag labels on commits
- Filter by branch, author, date range, or file path
- Click a commit to see all changed files
- Click a file to open a side-by-side diff view
- Right-click a commit to start an interactive rebase, checkout a ref, or copy the hash
- Infinite scroll — loads more commits as you scroll down
- Keyboard shortcut:
Cmd+9 (macOS) / Ctrl+Shift+9 (Windows/Linux)
Inline Blame Annotations
Toggle per-line blame annotations in the editor, showing who last changed each line and when.
- Age-based coloring: recent changes are highlighted, older ones fade out
- Compact format: date + author name + relative time at the end of each line
- Hover for full commit details (message, hash, email)
- Click the hover link to jump to that commit in the Git Log
- Silently skips untracked files (no annoying popups)
- Keyboard shortcut:
Option+B (macOS) / Alt+B (Windows/Linux)
Branch Manager
A tree view in the Source Control sidebar showing all your branches organized by category.
- HEAD — current branch with a star icon
- Local — all local branches
- Remote — remote branches grouped by remote name (origin, upstream, etc.)
- Tags — all tags
- Right-click context menu: Checkout, Create Branch, Merge, Rebase, Compare, Delete
Changelists
Group your uncommitted changes into named lists.
- Create multiple changelists to organize work-in-progress
- Set an active changelist (new/unassigned changes go there automatically)
- Multi-select files with Ctrl+click / Shift+click
- Drag files between changelists (within the same repository)
- Commit or commit and push individual changelists
- Multi-repo aware: works across multi-root workspaces and nested git repositories — each repo gets its own changelists, grouped under a repo node when more than one repo is open
- Stored per-repository in
<repo>/.vscode/changelists.json
- Keyboard shortcut:
Cmd+K (macOS) / Ctrl+K (Windows/Linux) to commit the active changelist (of the focused repository)
Interactive Rebase
A visual dialog for interactive rebase — reorder, squash, fixup, reword, edit, or drop commits.
- Drag-and-drop commit reordering
- Dropdown per commit: Pick, Squash, Fixup, Reword, Edit, Drop
- Inline message editing for Reword
- Trigger from the Git Log context menu: "Interactively Rebase from Here…"
- Runs non-interactively behind the scenes; pauses gracefully for
edit stops or conflicts
Merge Conflict Detection
Automatic detection of merge conflicts with quick resolution options.
- Status bar indicator showing conflict count
- "Resolve Merge Conflicts" opens VS Code's built-in merge editor
- "Accept All Non-Conflicting" stages files whose conflict markers are already resolved
Keyboard Shortcuts
| Action |
macOS |
Windows/Linux |
| Open Git Log |
Cmd+9 |
Ctrl+Shift+9 |
| Toggle Blame |
Option+B |
Alt+B |
| Commit Active Changelist |
Cmd+K |
Ctrl+K |
Commands
Open the Command Palette and type "Intellij git changelist" to see all available commands:
- Open Git Log
- Toggle Blame Annotations
- Interactive Rebase…
- New Changelist…
- Commit and Push Active Changelist
- Resolve Merge Conflicts
- Accept All Non-Conflicting Changes
- Refresh Branches / Refresh Changelists
Settings
| Setting |
Default |
Description |
intellijGit.blame.enabledOnStart |
false |
Show inline blame automatically when a file opens |
intellijGit.blame.recentDays |
14 |
Commits newer than this many days are highlighted as recent |
intellijGit.graph.pageSize |
200 |
Commits loaded per page in the graph (infinite scroll) |
Requirements
- VS Code 1.85+ (or any compatible editor: Cursor, Windsurf, etc.)
- Git 2.0+ installed and available in
PATH
Development
npm install # install dependencies
npm run compile # bundle with esbuild
npm run watch # rebuild on change
npm run typecheck # type-check without emitting
npm run lint # lint the source
Press F5 in VS Code to launch the Extension Development Host and try it out.
How It Works
The extension shells out to the git CLI (no native dependencies) and parses porcelain output. The commit graph computes branch lanes with an incremental DAG layout algorithm and renders colored lines as inline SVG in a webview. Diffs are shown through a virtual intellijgit: document provider feeding VS Code's native diff editor.
License
MIT