Git Jet
JetBrains Git, 1:1, inside VS Code. Git Jet is the most faithful recreation of the Git workflow of WebStorm,
IntelliJ IDEA, PyCharm and the other JetBrains IDEs. It is not "inspired by" them: its logic is ported from the
IDE's own open-source Git plugin, so the Commit tool window with changelists, the Log with its graph, the branches
popup, Smart Checkout, interactive rebase, shelve, the Push dialog and the three-way merge window behave the way
you know — same actions, same dialogs, same shortcuts, with the look of the New UI. Projects with several Git
repositories work like in the IDE, and a read-only MCP server gives your AI agents the repository as Git Jet
sees it.
Preview. Git Jet is a pre-release: feedback and bug reports are very welcome in
GitHub Issues.
Git Jet is an independent open-source project, not affiliated with or endorsed by JetBrains. WebStorm,
IntelliJ IDEA and JetBrains are trademarks of JetBrains s.r.o., used here only to describe the experience the
extension recreates.

In this page: Getting started · Find your way around ·
The 12 features you'll recognize · And much more ·
For AI agents (MCP) · Keyboard shortcuts ·
Settings · Known limitations · Privacy
Getting started
- Install Git Jet from the Marketplace (VS Code 1.107 or newer, also Cursor, Antigravity and VSCodium from
Open VSX). Git must be installed: Git Jet uses the same executable as the built-in Git extension unless you set
gitjet.git.path.
- Open a folder with a Git repository. Repositories in subfolders are found too, several levels deep, and
each one gets its own color in the branches popup, the Commit tool window and the Log.
- Click the Git Jet icon in the activity bar: that is the Commit tool window. The Git tool window
(Log, Console, Reflog) is the Git Jet tab of the panel below the editor.
- Run
Git Jet: Set Up Workspace Like WebStorm from the Command Palette (⇧⌘P / Ctrl+Shift+P). It applies
the JetBrains file status colors, turns off the built-in Git surfaces that would duplicate Git Jet's
(decorations, open-diff-on-click, autofetch) and explains the one step VS Code does not let extensions do:
right-click the Source Control icon › Hide 'Source Control'. Git Jet: Restore VS Code Defaults undoes it.
- Optional, recommended: set
"gitjet.keymap": "jetbrains" for the IDE shortcuts — ⌘K Commit, ⇧⌘K Push,
⌘T Update Project, ⌘9 Git, ⌃V VCS Operations (see Keyboard shortcuts).
Find your way around
Everything WebStorm puts around the editor has its place in VS Code:

- The Git Jet icon in the activity bar opens the Commit tool window (⌘K / Ctrl+K with the JetBrains
keymap, or Git Jet: Show Commit Tool Window).
- Your changes, grouped by changelist (or staged / unstaged if you prefer the Git index), with a checkbox per
file and per hunk: only what is checked gets committed. Double-click a file for its diff.
- The branch widget (
main ▾): opens the branches popup.
- Commit message with Amend, message history, AI generation, then Commit or Commit and Push….
- The Git tool window: the Git Jet tab of the panel, with the Log, Console, Reflog and
MCP tabs (plus Working Trees when you have worktrees, and a History tab per file you ask about).
MCP is where AI agents get Git Jet's read-only MCP server: see For AI agents (MCP).
- The Branches pane of the Log: local and remote branches and tags; a click filters the Log.
- The Log with the commit graph, filters (branch, user, date, paths) and text or hash search.
- The commit details: changed files, message, author, hash and the actions of the selected commit.
- Change markers in the gutter: click one to see the old text, roll it back or open the diff.
- The branch in the status bar: the branch of the file you are editing, also a way to the branches popup.
The Git tool window lives in VS Code's panel (the area of the Terminal and Problems):
- press ⌘9 (macOS) / Alt+9 (Windows / Linux) with the JetBrains keymap;
- or run Git Jet: Show Git Log from the Command Palette;
- or open the panel (⌘J / Ctrl+J) and click its Git Jet tab;
- or click Show Git Tool Window in the toolbar of the Commit tool window.
Like any VS Code view you can maximize it (the ⌃ of the panel), drag the Git Jet tab to the secondary side
bar or the other side of the window, or run Git Jet: Open Git Log in Editor to get the Log as an editor tab.
Open Another Log Tab (the + of its tabs) opens more Logs, each with its own filters, like the IDE.
Every action is one shortcut or one command away
Every Git Jet action is in the Command Palette under Git Jet: — type what you would look for in WebStorm's
Find Action:

VCS Operations (⌃V on macOS, Alt+` on Windows / Linux, with the JetBrains keymap) is WebStorm's quick list:
commit, rollback, history, annotate, branches, push, stash, update, pull, fetch, merge, rebase… numbered, so ⌃V 1
is Commit. And right-click a file (in the editor or the Explorer) for its Git submenu: Annotate, Show History,
Compare with Branch, Rollback, Add to .gitignore and more.

| To open |
Click |
Shortcut (JetBrains keymap) |
Command |
| Commit tool window |
Git Jet icon in the activity bar |
⌘K · Ctrl+K |
Git Jet: Show Commit Tool Window |
| Git tool window (Log) |
Git Jet tab of the panel |
⌘9 · Alt+9 |
Git Jet: Show Git Log |
| Branches popup |
main ▾ in the Commit window or the status bar |
⇧⌘` · Ctrl+Shift+` (always on) |
Git Jet: Branches… |
| VCS Operations |
— |
⌃V · Alt+` |
Git Jet: VCS Operations |
| Push dialog |
the ↗ outgoing arrow next to main ▾ |
⇧⌘K · Ctrl+Shift+K |
Git Jet: Push… |
| Update Project |
VCS Operations › Update Project… |
⌘T · Ctrl+T |
Git Jet: Update Project |
| Resolve conflicts |
Resolve on the Merge Conflicts node of the Commit window |
— |
Git Jet: Resolve Conflicts… |
| Git settings |
… menu of the Commit / Git tool windows |
— |
Git Jet: Git Settings |
| Themes and colors |
… menu of the Commit / Git tool windows |
— |
Git Jet: Appearance… |
| MCP server for AI agents |
MCP tab of the Git tool window, or the … menu |
— |
Git Jet: AI Agents (MCP)… |
The 12 WebStorm features you'll recognize
The reason many people stay on WebStorm. Changes are grouped by changelist (the default one plus any you
create, even with parts of one file in different lists), every file and every hunk has its checkbox, and the
commit message remembers its history and checks itself (subject length, blank line, spelling) — and, as in the
IDE, it stays in the editor after a commit, ready to reuse. Before-commit checks, sign-off, Amend with the
previous message, Commit and Push…, and a Shelf / Stash tab next to it.
Open it: the Git Jet icon in the activity bar, or ⌘K.

The Log you know: the commit graph with colored branches, the Branches pane, filters by branch, user, date
and paths, text and hash search with history, and the details of the selected commit with its changed files.
Everything resizes the way you want: drag the borders between columns (the widths are remembered) and the
splitter between the changed files and the commit message; in a narrow window the filters scroll sideways, and
a hidden Branches pane leaves its Branches stripe on the left to bring it back with one click.
With several repositories, their commits share one graph (each repository on its own lanes, with its color) and
the Paths filter lists the repositories: click one to hide it, ⌘/Ctrl+Click to see only that one.
Right-click a commit for Checkout Revision, New Branch…, New Tag…, Cherry-Pick, Revert Commit, Reset Current
Branch to Here…, Interactively Rebase from Here…, Compare with Local, Show Repository at Revision and more.
Open it: ⌘9, or the Git Jet tab of the panel.

main ▾ opens the popup of WebStorm's branch widget: Recent, Local, Remote and Tags as a searchable tree,
favorites (★), incoming / outgoing arrows, and for each branch Checkout, New Branch from…, Checkout and Rebase
onto Current, Compare with Current, Show Diff with Working Tree, Rebase Current onto Selected, Merge into Current,
Update, Push…, Rename…, Delete. Type to search branches and actions at the same time.
Open it: click main ▾ (Commit window or status bar), or ⇧⌘`.

With several repositories in the project (nested ones included) it becomes the multi-repository popup: one row
per repository with its color and current branch (› shows its own branches), the branches of the current
repository, and — with Execute branch operations on all roots — the branches they all have: checkout, new
branch, rename, delete, merge, rebase, update, pull and push run in every repository that has the branch,
with the IDE's rollback if one of them fails. Pull, Merge and Rebase pick the repository in their Git Root
combo.

4. Smart Checkout
Switch branches with uncommitted changes in the way and you get the IDE's Git Checkout Problem dialog:
Smart Checkout shelves (or stashes) your changes, checks out and brings them back; Force Checkout
discards them; Don't Checkout stays. If your changes clash with the new branch, the Conflicts dialog opens so
you resolve them right there. Update Project and Merge do the same.
Open it: it appears by itself when a checkout needs it.

5. The Push dialog
Review before you push: the outgoing commits of each repository and branch, their files and diffs, the target
branch (editable, with a new upstream when needed — a new branch goes to a branch of its own name on the
remote, never to the one it was created from), Push Tags and Force Push (always
--force-with-lease, never on protected branches). A rejected push offers Merge or Rebase and pushes
again. Show Changes above the commits closes the changes pane when you need the room.
Open it: ⇧⌘K, the ↗ arrow next to main ▾ (it shows how many commits are waiting), or Commit and
Push….

6. Update Project
⌘T fetches every repository and merges or rebases the current branch onto its upstream, saving your local changes
first and restoring them afterwards, then tells you "N files updated in M commits" with View Commits. Pick
merge or rebase the first time (or in the Git settings), like the IDE.
Open it: ⌘T, or ⌃V › Update Project…

7. Interactive rebase
Interactively Rebase from Here… on a commit of the Log opens the Rebasing Commits dialog: reorder by
dragging, reword, squash, fixup, drop, edit. While a rebase is stopped, the Commit tool window shows it with
Continue, Skip and Abort.
Open it: right-click a commit in the Log › Interactively Rebase from Here…

8. Conflicts dialog and three-way merge
When a merge, rebase, cherry-pick or unstash stops on conflicts, the Conflicts dialog lists every file with
Accept Yours / Accept Theirs / Merge…. Merge… opens the three-pane Merge Revisions window: the
non-conflicting changes are applied for you, each conflict has its accept arrows, and Merge with AI can
propose a resolution you review first.
Open it: it opens by itself; later, Resolve on the Merge Conflicts node of the Commit window.


9. Annotate and the gutter
Annotate with Git Blame puts the date and author of every line next to it, colored by age; click one for its
commit, or Annotate Previous Revision to go back in time. The gutter shows what you changed since the last
commit, and a click on a marker shows the old text with Rollback and Show Diff.
Open it: right-click the line numbers › Annotate with Git Blame, or right-click the editor › Git › Annotate.

10. The diff viewer
Side by side (or unified) with inclusion checkboxes to commit only some hunks, navigation between changes and
files, three-way comparison for merge commits, and directory comparisons. Compare with Branch or Tag…,
Compare with Revision… and Show History work on any file or folder.
Open it: double-click a file in the Commit tool window or the Log.

11. Shelf and stash
Shelve Changes… keeps changes aside as an IDE-style patch that survives branch switches; Stash Changes…
uses git stash. Unshelve or unstash with a preview, partially, or as a new branch; both can share one tab.
Open it: the Shelf tab of the Commit tool window (Shelve Silently is in its toolbar), or ⌃V › Stash
Changes…

12. History, and the Reflog you never had
Show History of a file, a folder or a selection opens its own tab in the Git tool window. And one thing
WebStorm doesn't have: the Reflog tab lists everything HEAD went through and marks the commits a reset or a
rebase lost, which you bring back with New Branch… or Reset Current Branch to Here….
Open it: right-click a file › Git › Show History; the Reflog tab of the Git tool window.

And much more
Pull Requests (GitHub)
The Pull Requests tool window of WebStorm's GitHub plugin: the repository's pull requests with search and filters
(state, author, label, assignee, review), Create Pull Request… from the current branch (pushed first when
needed), the details with commits, changed files, CI checks and timeline, and a review diff where you comment on
lines, reply, resolve threads and submit a review. Merge, Squash and Merge or Rebase, Close / Reopen and Checkout
of the pull request's branch are one click away. GitHub Enterprise works through gitjet.github.enterpriseServer.
Open it from the Git Jet icon's side bar (Pull Requests).


AI actions
Generate Commit Message with AI writes the message from the included changes, Improve Commit Message
rewrites the one you typed (optionally as Conventional Commits), Explain Commit in the Log explains a commit,
and Merge with AI in the Merge Revisions window proposes a resolution for the open conflicts that you review
before applying.
The model is either one of VS Code's Language Model API (GitHub Copilot Chat or any other model provider you
have installed) or the AI command line tool you already use, with your own subscription: Claude Code
(claude), OpenAI Codex CLI (codex) or Gemini CLI (gemini). So the AI actions also work in Cursor,
Antigravity and VSCodium, where there is no Copilot. Git Jet finds the tools on the PATH and in their usual
install folders (or at gitjet.ai.cli.claudePath / codexPath / geminiPath), asks once per tool before the
first request, sends the prompt on standard input, runs the tool in an empty temporary folder with its tools
turned off, and never stores credentials: sign in to the tool once in a terminal. Select Language Model for AI
Actions… (or gitjet.ai.model: claude-code, codex, gemini-cli or a Copilot family) picks the model;
gitjet.ai.cli.enabled turns the command line tools off. Secret values (keys, tokens, passwords, .env files)
are replaced by [REDACTED] before anything is sent.
WebStorm's themes
Git Jet: Appearance… previews every WebStorm theme live on the Git Jet views — Islands Dark / Light, Darcula,
Light, High Contrast and more — or follows your VS Code theme, and customizes colors token by token, the accent
and the fonts, like Settings › Appearance. Nothing changes until you press Apply or OK.

Background tasks and the Git settings page
Long operations (fetch, pull, push, clone, rebase) run in the background with a status bar indicator and a list
where each task can be cancelled. Git Jet: Git Settings is the IDE's Version Control › Git page: Git
executable with Test, commit and push options, update method, protected branches, branch operations on all
roots, credential helper and more. Everything is also a regular VS Code setting.


Also included
Rollback, patches (create / apply), worktrees, submodules, several repositories per project (detected
automatically; gitjet.git.ignoredRoots skips some), GitHub clone / share / login, a Git console that logs every
command, Git bisect from the Log (Start / Mark Good / Mark Bad / Skip / Reset, with a banner while bisecting),
Git LFS (content diffs, Track / Untrack Files, Fetch / Pull LFS Objects), git-flow (Init, Start / Finish
Feature, Release and Hotfix, with plain git), and Local History › Show History / Put Label over VS Code's
Timeline.
For AI agents (MCP)
Git Jet includes a read-only MCP server that gives AI agents the
repository the way Git Jet sees it, through typed tools instead of raw git in a terminal: repositories,
status (staged / unstaged / untracked / conflicted, operation in progress), log (branch, author, path, text
and date filters), show_commit, diff (working tree, staged, against HEAD or between revisions),
branches (with incoming / outgoing), blame of a range, file_history (following renames), conflicts
(yours / base / theirs of a file), stashes, shelves, worktrees and reflog (with the commits a reset or
rebase lost).
Everything about it is in the MCP tab of the Git tool window (Git Jet: AI Agents (MCP)…, or the …
menu of the Commit and Git tool windows), laid out like WebStorm's Settings › Tools › MCP Server:

- VS Code agents (GitHub Copilot's agent mode) see it automatically as Git Jet in trusted workspaces:
the tab's checkbox (
gitjet.mcp.enabled) turns it on and off, and Show in MCP Servers opens VS Code's list.
- Other agents — Claude Code, Cursor, Antigravity, Gemini CLI and Codex — each have a row
with their status read from their own configuration (Configured, Needs update, Not configured, Not
installed). Auto-Configure adds Git Jet to it after a confirmation that names the file (Claude Code
through its own
claude mcp add --scope user), keeping everything else in the file; Remove takes it
out; Copy Config puts the agent's entry on the clipboard; Open File opens its configuration. A file
Git Jet cannot read is never rewritten. The agents start a copy of the server that survives extension
updates, with node: the tab says whether Node.js is on the PATH. They read the project folders the agent
gives them (MCP roots) or the folder they are started in.
- Test Server starts the server the way an agent does and shows how long it took, its tools and the
repositories it found; click a tool for the description agents get.
- Privacy: the server runs locally, only reads the repositories of the folders it is started in, never
changes anything, and replaces secret values (tokens, keys, passwords,
.env values) with [REDACTED].
Nothing leaves your machine except what the agent itself sends to its model. Changelists are not exposed yet.
Keyboard shortcuts
With gitjet.keymap set to jetbrains (default vscode keeps only the shortcuts that do not clash with VS Code):
| Action |
WebStorm (macOS) |
Git Jet (macOS) |
Git Jet (Windows / Linux) |
| Commit tool window |
⌘K |
⌘K |
Ctrl+K |
| Push… |
⇧⌘K |
⇧⌘K |
Ctrl+Shift+K |
| Update Project |
⌘T |
⌘T |
Ctrl+T |
| VCS Operations popup |
⌃V |
⌃V |
Alt+` |
| Branches popup |
— |
⇧⌘` (always on) |
Ctrl+Shift+` (always on) |
| Git tool window (Log) |
⌘9 |
⌘9 |
Alt+9 |
| Commit tool window (focus) |
⌘0 |
⌥0 |
Alt+0 |
| Rollback… |
⌥⌘Z |
⌃⌥Z |
Ctrl+Alt+Z |
| Show change popup (gutter) |
— |
⇧⌘D |
Ctrl+Shift+D |
| Previous / next change |
⌃⌥⇧↑ / ↓ |
⌃⌥⇧↑ / ↓ |
Ctrl+Alt+Shift+↑ / ↓ |
| Add to VCS |
⌥⌘A |
⌥⌘A (always on) |
Ctrl+Alt+A (always on) |
| Toggle hunk in commit |
— |
⌥⇧⌘I (always on) |
Ctrl+Alt+Shift+I (always on) |
All actions are also in the Command Palette under Git Jet, and can be rebound in Keyboard Shortcuts.
Key settings
| Setting |
Default |
What it does |
gitjet.git.path |
auto |
Git executable (auto-detected from the built-in Git extension or PATH) |
gitjet.keymap |
vscode |
jetbrains enables the IDE shortcuts |
gitjet.commit.enableStagingArea |
false |
Use the Git index (staged / unstaged) instead of changelists |
gitjet.changelists.allowPartial |
false |
Partial changelists: hunks of one file in different changelists |
gitjet.update.method |
merge |
Update Project with merge, rebase or the branch default |
gitjet.update.saveChangesPolicy |
shelve |
How Smart Checkout and Update keep your local changes: shelve or stash |
gitjet.push.protectedBranches |
master, main |
Branches that must not be force-pushed |
gitjet.branches.syncControl |
notDecided |
Execute branch operations on all roots (several repositories) |
gitjet.git.detectNestedRepositories |
true |
Register the Git repositories found in subfolders by themselves |
gitjet.stash.combineWithShelf |
false |
Show stashes and shelved changes in one tab |
gitjet.dialogs.mode |
float |
Dialogs as floating windows, editor tabs or quick picks |
gitjet.fetch.auto |
false |
Fetch periodically in the background |
gitjet.appearance.theme |
auto |
Theme of the views: auto (New UI Dark / Light after your VS Code theme), vscode (your VS Code colors) or any WebStorm theme: Islands Dark / Light / Darcula / High Contrast, Dark, Light, Light with Light Header, Darcula, IntelliJ Light, High Contrast |
gitjet.appearance.colorOverrides |
{} |
Customize colors of the theme, token by token (with gitjet.appearance.accent, fonts and compact mode) |
Everything else is under Settings › Extensions › Git Jet, or in the Git Settings page (Git Jet: Git
Settings).
Git Jet activates in workspaces that contain a .git folder, or when you open one of its views.
Known limitations
VS Code does not allow every JetBrains surface; where it doesn't, Git Jet rebuilds it inside its own webviews.
The differences you will notice:
- Dialogs open as floating auxiliary windows (or editor tabs), not true modal windows.
- The branch widget lives in the status bar and the Commit window header — extensions cannot add a widget to
the title bar.
- The native Source Control view cannot be hidden by an extension: hide it once by hand (see Getting
started).
- Gutter popups are VS Code hovers with the hunk diff and action links, not the IDE's floating editor.
- The editor banner "File has unresolved merge conflicts" is a CodeLens on the first line.
- Remote and virtual workspaces: Git Jet is a workspace extension, so it runs where the repository is
(Remote-SSH, WSL, Dev Containers, Codespaces); these setups have not been tested as thoroughly as local
folders yet, reports are welcome. Virtual workspaces (e.g. github.dev) are not supported.
- Restricted Mode: in an untrusted workspace Git Jet does not run Git at all (hooks and other
repository-configured programs could execute). Trust the workspace to enable it.
Privacy
Git Jet collects no telemetry and sends no data anywhere of its own accord. It only talks to the Git remotes
you use, and to the GitHub / GitLab APIs when you sign in or use the hosting features (Clone, Share, Pull
Requests). The AI actions run only when you invoke them, and send the changes, commit or conflict they work on —
with secret values replaced by [REDACTED] — to the language model you picked: through VS Code (for example
GitHub Copilot), or through the AI command line tool you allowed (Claude Code, Codex CLI, Gemini CLI) with your
own account, under that provider's terms. Git Jet never reads or stores those tools' credentials. The
MCP server answers only the agents you run, locally and read-only, with secrets redacted.
Credentials you choose to remember are kept in VS Code's SecretStorage (the system keychain).
License
Apache License 2.0. Git Jet ports logic from the git4idea plugin of
JetBrains/intellij-community (Apache 2.0) and uses New UI
icons and color palettes from that repository; it bundles the Inter and JetBrains Mono fonts (SIL OFL 1.1). See
NOTICE and THIRD_PARTY_NOTICES.md.
Git Jet is not affiliated with or endorsed by JetBrains s.r.o. WebStorm, IntelliJ IDEA and JetBrains are
trademarks of JetBrains s.r.o.; the extension does not use JetBrains product logos.
Contributing: see CONTRIBUTING.md. Security issues: see SECURITY.md.