Porcelain
IntelliJ parity

Roadmap

Everything the IntelliJ Git client does, and the bar is what Rebased ships as a standalone product: git4idea plus the platform's log, diff and merge. Each tile is a feature, ranked by how much it matters to a day's work, left to right and top to bottom. Glazed tiles are supported. Bisque tiles are fired before 1.0, and the gold seam is where 1.0 gets cut. Hover a tile to see what it is; click it to find it in the log below.

110of 179features supported
  • 110 supported
  • 28 before 1.0
  • 30 after 1.0
  • 11 not planned
  • next up
The glaze, rank 1 to 179
1.0
What 1.0 means. The top 138 tiles, the essential and important tiers, all glazed, and the settings and command IDs frozen. That's 28 to go. Until then the extension stays in preview and a minor version may still rename a porcelain.* setting.
Next up Full grammar coverage in diffs, lazy-loaded · Auto-fetch on an interval, with a last-fetch tooltip · Commit message inspections · Rename following in file history

The log

The same 179 features as a log, in the same order: rank is importance, so everything before 1.0 sits above the seam and everything after it below. One lane per area, a node per feature, and every lane merging into 1.0 before it fans out again. Filled nodes are supported, rings are waiting. Every ring expands into a mock of the feature drawn on the real surface.

Essentialfelt every session
51 of 59 supported
1Commit graph with colour-coded lanes and merge bubblesLog & graph
2Branch tree: local, remote and tags, searchableLog & graph
3Commit tool window with checkbox partial commitsCommit, shelf & stash
4Changed files and details for the selected commitLog & graph
5Porcelain diff viewer: paired gutter, curved connectors, per-side revision headersDiff & merge
6Checkout, and smart checkout when local changes block the switchBranches, tags & remotes
7Push panel with target editing and a commit previewPush, update & fetch
8Update Project: fetch, then merge or rebase, with autostashPush, update & fetch
9Text search with match-case and regex togglesLog & graph
10Branch filter, multi-selectLog & graph
11New branch from HEAD or from a commitBranches, tags & remotes
12Amend, and Commit and PushCommit, shelf & stash
13Side-by-side and unified layoutsDiff & merge
14Editable working-tree side, saved with ⌘S or by files.autoSaveDiff & merge
15Hover and go to definition through the language serversDiff & merge
16A caret in every pane, read-only sides includedDiff & merge
17Per-hunk and line-range inclusion from the diff gutterCommit, shelf & stash
18Commit context actions: checkout, reset, revert, cherry-pick, dropLog & graph
19Floating diff windows, one reused for every file, pin to keepDiff & merge
20Ahead/behind and incoming/outgoing counts per branchBranches, tags & remotes
213-way merge editor with gutter verbs and an editable resultDiff & merge
22Conflicts window: Accept Yours, Accept Theirs, MergeDiff & merge
23Merge Conflicts group nested in Changes, with a continue/abort bannerCommit, shelf & stash
24Author, date and paths filtersLog & graph
25Go to hash, branch or tag (⌘G)Log & graph
26Collapse linear branches, per fragment and all at onceLog & graph
27Resizable, hideable columnsLog & graph
28FavouritesBranches, tags & remotes
29Update (fast-forward) with upstream awarenessBranches, tags & remotes
30Merge into current, Rebase current ontoBranches, tags & remotes
31Annotate with Git Blame: author and date gutter with a hover cardBlame & file history
32Show File History from the editor or the explorerBlame & file history
33Force push with --force-with-leasePush, update & fetch
34Protected branches refuse force pushPush, update & fetch
35Rollback, with the option to delete added filesCommit, shelf & stash
36Unversioned files groupCommit, shelf & stash
37Directory grouping and multi-selectionCommit, shelf & stash
38Ignore whitespace: four policiesDiff & merge
39Find in a diff (⌘F)Diff & merge
40Next and Previous file (⌘F7 / ⌘⇧F7)Diff & merge
41Multi-root workspaces with a shared active repositoryPlatform
42Syntax highlighting in diffs and merges, six grammarsDiff & merge
46"In N branches" in the details paneLog & graph
47Rebase conflict banner: continue, abort, skipHistory rewriting
48Compare with Current: a branch comparison tab with per-side filtersLog & graph
49Compare Versions between two commitsLog & graph
50Commit message history dropdownCommit, shelf & stash
51Message seeded from commit.template or MERGE_MSGCommit, shelf & stash
52Native diff editor fallback through porcelain.diff.viewerDiff & merge
53Fetch, with porcelain.fetch.tagsPush, update & fetch
54Git Operations popup (⌘⌥G)Platform
Importantweekly
59 of 79 supported
60Interactive rebase editor: pick, reword, edit, squash, fixup, drop, reorderHistory rewriting
61Interactively Rebase from HereHistory rewriting
62Edit Commit Message on any commitHistory rewriting
63Squash N commits under a combined messageHistory rewriting
64Fixup… the working tree into a chosen commitHistory rewriting
65Undo CommitHistory rewriting
66Rebase options: --onto, interactive, autosquash, update-refs, rebase-mergesHistory rewriting
67Merge options: --no-ff, --ff-only, --squash, --no-commit, custom messageHistory rewriting
68Pull options: rebase, ff-only, no-ff, squash, no-commitHistory rewriting
69Multi-commit cherry-pick, oldest first, in one invocationHistory rewriting
70View Git Commands: the exact rebase todo before it runsHistory rewriting
71Guard rails: verbs disabled while an operation is in progress, with the reasonHistory rewriting
72Shelf, IntelliJ-compatible, under .idea/shelfCommit, shelf & stash
73Unshelve: pop, apply, per file, delete; import a patch as a shelfCommit, shelf & stash
74Stash with a message, keep index, include untrackedCommit, shelf & stash
75Stash to branchCommit, shelf & stash
76Sign-off, author override, skip hooksCommit, shelf & stash
77Add to .gitignoreCommit, shelf & stash
78Recent branches from the reflogBranches, tags & remotes
79Reset to upstream on the checked-out branchBranches, tags & remotes
80Delete safety: force-delete names the commits it would discardBranches, tags & remotes
81Tags: create, checkout, push, delete, delete on remoteBranches, tags & remotes
82Annotated tags when a message is givenBranches, tags & remotes
83Manage Remotes: add, rename, re-point, removeBranches, tags & remotes
84Clean Up Branches, merged pre-selected, prefix filter, counted forceBranches, tags & remotes
85Branch grouping by prefix, or a flat listBranches, tags & remotes
86Rename branchBranches, tags & remotes
87Delete branch on remoteBranches, tags & remotes
88Set upstream while pushing, push tags, skip pre-push hooksPush, update & fetch
89Rejected push chooser: merge or rebasePush, update & fetch
90Arrivals list after Update ProjectPush, update & fetch
91Graph modes: Sort Topologically, First Parent Only, No Merge CommitsLog & graph
92Long-edge stubs with jump, and Show Long EdgesLog & graph
93Highlighters: My Commits, Dim Merge Commits, Fade Other BranchesLog & graph
94Presentation: Compact References, Tag Names, Commit TimestampLog & graph
95Date presets and a custom After/Before rangeLog & graph
96Whole-history author list with "(me)" pinnedLog & graph
97Copy Revision Number, Show in Git LogLog & graph
98Blame Options: colour by age or author, name style, ignore whitespace, follow movesBlame & file history
99Uncommitted lines marked as suchBlame & file history
100History Up to Here, Open Repository Version, Show Diff from historyBlame & file history
101Search Commits by message or hashBlame & file history
102Highlight granularity: line, word, character, offDiff & merge
103Collapse unchanged fragments; synchronised scrolling toggleDiff & merge
104Folds open in stages from the caret and name their scopeDiff & merge
105Change stripe with click to jump; live difference countDiff & merge
106Diff titles carry position and both revisionsDiff & merge
107Binary and image diffs side by side; large-file placeholder with Show anywayDiff & merge
108Changed-on-disk banner: reload or keepDiff & merge
109Revert or include a hunk from the working-tree diff gutterDiff & merge
110Apply non-conflicting changesDiff & merge
111Resolve automatically for non-overlapping editsDiff & merge
112Accept, accept both, revert to base, ignore, per conflictDiff & merge
113One undo/redo timeline across typed edits and gutter verbsDiff & merge
114Conflict stepping, per-pane find, collapse unchanged in the mergeDiff & merge
115Open in Porcelain Merge Editor from the VS Code Source Control viewDiff & merge
116Worktrees: list, open, create on a new branch, remove, prunePlatform
117Workspace trust: disabled until the folder is trustedPlatform
118Edit Source from any diff, opening at the caretPlatform
1.0
Usefulmonthly
0 of 30 supported
Outside parityIntelliJ lacks it, or VS Code already has it
0 of 11 supported
169Bisect, reflog browser, submodules, notesNot plannedPlatform
170ChangelistsNot plannedCommit, shelf & stash
171Staging-area mode (D1)Not plannedCommit, shelf & stash
172Before-commit code checks: reformat, optimize imports, analyze, run testsNot plannedCommit, shelf & stash
173Local HistoryNot plannedCommit, shelf & stash
174External diff and merge toolsNot plannedDiff & merge
175Directory diff and combined all-in-one diffNot plannedDiff & merge
176Clone and init dialogsNot plannedPlatform
177GitHub, GitLab and Space integrationNot plannedPlatform
178Terminal completion, code-vision authorship, log indexingNot plannedPlatform
179Committed-changes and Incoming tabsNot plannedLog & graph

How things get on this page

The tiers are my judgement of how often a feature is felt in a day's work, so the order will move as I use the thing. I build what I actually use, and the seam exists so the long tail can never hold up 1.0. The last tier is outside the bar on purpose: features IntelliJ itself lacks, or that VS Code already provides, count as parity by integration rather than by rebuilding. If there is something in IntelliJ's Git you use every week and it's ranked too low, open an issue and say what it's for.