Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>JB Commit PanelNew to Visual Studio Code? Get it now.
JB Commit Panel

JB Commit Panel

DrFormat

|
1 install
| (0) | Free
JetBrains-style Git tool window: Local Changes with the diff in the panel, Commit Changes and Push Commits dialogs, Stash, and a Log with the commit graph, branches and filters.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

JB Commit Panel

A JetBrains-style Git tool window for VS Code: Local Changes with the diff right in the panel, Commit Changes and Push Commits dialogs, Stash, and a Log with the commit graph.

Local Changes

  • Changes, Unversioned Files and Merge Conflicts, with file icons from your icon theme and status colors, as a flat list or grouped by directory.
  • Diff preview next to the list: unified or side-by-side, unchanged fragments collapsed, changed words highlighted.
  • The diff is editable, like in JetBrains IDEs: type in the current version of the file, or revert one change with its arrow (↶ next to the line numbers in the unified view, » between the sides in side-by-side). The edits go straight to the file, or into its open editor when that has unsaved changes. ⌘Z in the diff undoes them.
  • Commit with Commit File… in the context menu, the Commit button on the toolbar or ⌘K.

The Commit Changes dialog opens above the whole window. Drag it by its title and resize it; next time it opens at the same size. It has:

  • the files, with checkboxes;
  • the commit message, with message history (🕓);
  • Author, Amend commit and Sign-off commit;
  • the diff;
  • Cancel and Commit ∨ (Commit and Push… is in its menu: it commits, then opens the Push dialog).

Exactly the checked files are committed, whatever is staged in the index.

Select several files with Shift-click or ⌘-click: Commit, Rollback, Add to VCS, Delete, Jump to Source and Copy Path then work on all of them, and Space checks or unchecks them together.

The context menu of a file also has Rollback…, Stash Changes…, Show Diff in Editor, Jump to Source, Copy Path, Reveal in Finder / Explorer, Add to VCS for unversioned files, Add to .gitignore and Delete… (moves the file to the trash).

Prefer the commit form inside the panel? Turn on Use non-modal commit interface (jbCommitPanel.nonModalCommit). Quick way to the setting: the panel's "…" menu → Open Settings.

Stash

  • Stash Changes… from the toolbar stashes all local changes, from the context menu only the selected files. Unversioned files are stashed too.
  • The Stash tab lists the stashes; open one to see its files, select a file to see its diff.
  • Apply, Pop, Drop, Unstash as Branch…, Show Diff and Clear All on the toolbar and in the context menu.

Push

Push… (⇧⌘K anywhere except the text editor, where ⇧⌘K stays Delete Line) opens the Push Commits dialog above the whole window:

  • on the left, where the branch goes ("feature → origin : feature") and the commits to push. Click the remote to choose another one or to define one. Click the branch after it to push to another branch; a branch the remote doesn't have yet is marked New;
  • on the right, the files of the selected commit, or of all the commits when the branch row is selected. ⌘D or a double-click shows the diff below them;
  • Push tags: all of them, or the annotated ones on the pushed commits (Current Branch);
  • Cancel and Push ∨ (Force Push is in its menu; it asks first and uses --force-with-lease).

⇧⌘K, then Enter pushes right away. A branch without an upstream starts tracking the branch it is pushed to. When the remote has commits your branch doesn't, the push is rejected: choose Merge or Rebase, and the push runs again. Push… is also in the context menu of a branch in the Log.

Log

  • Branches on the left: HEAD (Current Branch), Local and Remote, with a "Branch or tag" search. Click a branch to jump to its latest commit, double-click it to see only its history.
  • The commit graph with branch and tag labels, author and date. More history loads as you scroll.
  • Filters: "Text or hash" (.* for a regular expression, Cc to match case), Branch, User, Date and Paths. The button shows the active value, × clears it.
  • On the right, the changed files and details of the selected commit: message, hash, author, date and the branches that contain it.
  • Double-click a file or a commit to open the commit's diff window: its files on the left, the diff on the right.
  • Select several commits with Shift-click, ⌘-click or Shift+↑ ↓: the files on the right are their changes together, below them the details of each one, and the diff window shows those changes together too.

Branch actions (right-click a branch): Checkout, New Branch from Selected…, Checkout and Rebase onto Current Branch, Compare with Current Branch, Show Diff with Working Tree, Rebase Current Branch onto Selected, Merge into Current Branch, Update, Push…, Rename…, Delete. The toolbar next to the branches has New Branch, Update, Delete, Compare and Fetch.

Compare with Current Branch shows the commits of the branch that the current one doesn't have; ⇄ Swap shows the other way round, × ends the comparison. Show Diff with Working Tree (a branch) and Compare with Local (a commit) open the diff window with every file that differs from your working tree.

Commit actions (right-click a commit): Copy Revision Number, Create Patch…, Show Diff, Compare with Local, Cherry-Pick, Checkout Revision, Reset Current Branch to Here…, Revert Commit, Undo Commit…, Edit Commit Message… (F2), Fixup…, Squash Into…, Drop Commit…, Interactively Rebase from Here…, New Branch…, New Tag…, Go to Child Commit, Go to Parent Commit.

With several commits selected: Copy Revision Numbers, Create Patch… (one file, oldest commit first), Show Diff, Cherry-Pick (oldest first), Revert Commits (newest first), Drop Commits… and Squash Commits…. Squash Commits… asks for the message and makes one commit at the place of the oldest selected one; the commits between them stay, after it. A cherry-pick or revert that stops on a conflict goes on with the rest of the commits after Continue.

Interactively Rebase from Here… opens a dialog with the commits from the selected one up to the latest, newest first like the log. Mark each one Pick, Reword, Squash, Fixup or Drop (P, R, S, F, D), and move them with ⌥↑ and ⌥↓. Squash and fixup go into the kept commit below them; with several commits selected, into the oldest of them. The message of a reworded or squashed commit is edited below the list. Start Rebasing runs it. With git's rebase.autoSquash turned on, "fixup! …" and "squash! …" commits start out under the commits they are for.

Fixup… and Squash Into… put your local changes into an older commit. The Commit Changes dialog opens with the message "fixup! " (or "squash! "). Commit and Rebase… (⌘Enter) commits it and opens Interactive Rebase with it already under that commit, so Start Rebasing folds the changes in; Commit in the Commit ∨ menu makes the commit and leaves it for later. A squash adds its message to the commit's message (without the "squash!" line); a fixup keeps the commit's message.

Anything that rewrites history or deletes data asks first. Editing commits that are already pushed warns that the branch will need a force push. The log refreshes by itself when branches, tags or HEAD move.

Rebase, merge and cherry-pick that stop

When a rebase, merge, cherry-pick or revert stops on conflicts, a bar above Local Changes says so ("Rebasing feature onto main (2/5)") and what to do next. Resolve the conflicts, then press Continue (the resolved files are marked resolved for you), or Skip the commit (rebase), or Abort. A merge is finished by committing. The bar also appears when the operation was started outside VS Code, and the same actions are in the command palette.

Keyboard

On Windows and Linux use Ctrl instead of ⌘ and Alt instead of ⌥.

Where Keys Action
Anywhere except the text editor ⇧⌘K Push…: the Push Commits dialog
Git panel ⌘K Commit…: the dialog with the selected files
Git panel ⌥⌘K The same, with Commit and Push… as the default button
Changes list ↑ ↓ ← → Move, collapse, expand
Changes list Shift+↑ ↓, ⌘A Extend the selection, select all
Changes list Space Check or uncheck (in the dialog and in the non-modal mode)
Changes list Enter, F4, double-click Open the file
Changes list ⌥⌘Z Rollback…
Changes list ⌥⌘A Add to VCS (unversioned files)
Changes list Delete Delete… the selected files
Commit dialog ⌘Enter Commit (after Fixup… and Squash Into…: Commit and Rebase…)
Commit dialog ⌥⌘K Commit and Push
Commit dialog Esc or a click outside Cancel; the message is kept for next time
Push dialog Enter, ⌘Enter Push
Push dialog ⌘D, double-click The diff of the selected file
Push dialog F4 Jump to Source
Push dialog Esc or a click outside Cancel
Diff F7, ⇧F7 Next or previous change
Log ↑ ↓ PgUp PgDn Select a commit
Log Shift+↑ ↓, Shift-click, ⌘-click, ⌘A Select several commits, all of them
Log Enter, ⌘D, double-click The commit's diff window
Log ⌘C Copy the commit hash (several: separated by spaces)
Log F2 Edit Commit Message…
Branches Enter, double-click Show only this branch
Branches Delete Delete the branch
Diff window Esc Close
Edit Commit Message ⌘Enter, Esc OK, Cancel
Interactive Rebase P, R, S, F, D (Delete) Pick, Reword, Squash, Fixup, Drop
Interactive Rebase ⌥↑ ⌥↓ Move the selected commits
Interactive Rebase ⌘Enter, Esc Start Rebasing, Cancel

Requirements

VS Code 1.90 or newer and git. The dialogs and the diff window open above the window in VS Code versions with modal editors (the workbench.editor.useModal setting); otherwise they open as editor tabs. Push, fetch and pull go through VS Code's built-in Git extension, so they sign in the way VS Code does.

License

MIT. The licenses of the bundled open-source libraries are in ThirdPartyNotices.txt, which comes with the extension.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft