Porcelain

Switch editors, not your Git workflow.

Porcelain brings the Git workflow from JetBrains IDEs to VS Code and Cursor: a branch tree beside a compact commit graph, a Commit tool window where the checkboxes are the commit, Shelf and Stash, branch comparison, interactive rebase, blame, floating diff windows and a three-way merge editor. I built it because I'd moved editors and didn't want to relearn ten years of Git habits, and it's for anyone else in the same position. It's free and MIT licensed, and it's a fork of BranchShift, which itself began as a fork of jet-git.

It's pre-1.0. Everything on these pages is shipped and I use it daily, but there are rough edges, and a setting or command ID may still change in a minor version before 1.0. The roadmap has what's left.

Porcelain is an independent open-source project with no affiliation to JetBrains, Microsoft, GitHub or Cursor. It uses none of JetBrains' code; eighteen (18) icons in the Commit tool window come from the Apache-licensed IntelliJ Platform icon set, unmodified.

The Porcelain panel across the bottom of VS Code: a branch tree on the left, a colour-coded commit graph in the middle with author, message, date and hash columns, and the changed files and details of the selected commit on the right.
The Porcelain panel: branch tree, commit graph, changed files and commit details, in one place.

Familiar workflow, new editor

Commit tool windowPartial commits by checkbox, Amend, Commit and Push, Shelf and Stash, per-hunk inclusion
Git LogBranch tree, compact graph, refs, filters, changed files and details
Compare with CurrentBidirectional comparison tabs with per-side filters
Branch actionsCheckout, Update, Push, Merge, Rebase, Rename, Delete, Favourite, Clean Up
Rewriting historyInteractive rebase, reword, squash, fixup, undo, on real git rebase -i
Merge conflictsConflict window and a syntax-highlighted three-way editor

Installing

Install from the Marketplace listing, or from a terminal:

code --install-extension sultanofcardio.porcelain

Every GitHub release has a .vsix attached for offline installs: run Extensions: Install from VSIX… from the Command Palette. That route works in Cursor too. Porcelain isn't on Open VSX yet (the registry Cursor's Extensions view reads), so the VSIX is the way in there for now.

You'll need VS Code 1.86 or later, for the detached windows the diff surfaces use, and git on PATH. Porcelain runs git against your workspace, and a workspace's own hooks and configuration can execute commands, so it stays disabled until the workspace is trusted. It doesn't run in virtual workspaces either, as there are no local files for git to read.

The first five minutes

  1. Open the Porcelain tab in the bottom panel. The branch tree is on the left; click a branch to filter the log to it, or press G (CtrlG) and type a hash, branch or tag to jump to it.
  2. Select a commit to see its files and details on the right. Double-click a file for the diff, in its own window. Right-click the commit for checkout, reset, revert, cherry-pick and the rewriting verbs.
  3. Open the Commit view in the activity bar. Tick the files you want, type a message, and press Commit or Commit and Push. There's no staging step; the checkboxes are the commit.
  4. K opens the push panel. G opens the Git Operations popup, which is where Update Project lives.
  5. When a merge stops on conflicts, a Merge Conflicts group appears inside Changes. Resolve opens the conflict list; double-click a file for the three-way editor.

Each of those has its own page in the sidebar. If you already know IntelliJ's Git, the shortcuts page is probably the one you want first.