VS Code Extensions
G

GitCanvas — JetBrains-style Git

by GitPilot

A JetBrains-inspired Git experience for VSCode

Downloads

14

Rating

(0)

Version

0.2.0

Last updated

Aug 24, 2026

A JetBrains-inspired Git experience for Visual Studio Code. Built for developers coming from IntelliJ / WebStorm / RubyMine who miss their visual Git workflow.

English | 中文


English

Why GitCanvas?

If you've ever switched from a JetBrains IDE to VSCode, you probably hit the same wall: VSCode's built-in Source Control is fine for staging, but the visual Git graph, interactive rebase UI, and one-click commit panel you loved in IntelliJ are just… gone. GitLens is great for inspection, but it doesn't do the work for you. GitCanvas is the missing piece.

Features

  • 🎨 Git Graph — Canvas-rendered, smooth at 10k+ commits. Branch lanes, merge points, ref labels (HEAD / branches / tags / remotes). Click any commit to see diff, files, author, parents.
  • 📝 Commit Panel — JetBrains-style. Stage/unstage files individually or by hunk. Inline diff, multi-line commit message, recent-commit history.
  • 🔀 Interactive Rebase — Drag-and-drop reorder, squash / pick / reword / drop / edit, with conflict preview.
  • 🔧 Branch Compare, Inline Blame, Merge Conflicts, Changelists, Tags — the rest of the JetBrains toolkit, all in one extension.
  • 🌐 i18n — English & Simplified Chinese, auto-follows VSCode language.

Screenshots

Real screenshots coming in v0.2.0.

Git Graph Commit Panel Interactive Rebase
Git Graph Commit Panel Rebase

Branch Switch Highlight

When you switch from one branch to another, GitCanvas tags commits that are exclusive to the branch you just left. They show up with a warm amber highlight, a 4px left gutter bar, and an inline from <branch> pill — so you immediately see what your previous branch contributed that hasn't been merged yet.

Incoming commits from previous branch
Branch Switch Highlight

Implementation:

  • Data source: git rev-list HEAD..<previousBranchTip> — only commits reachable from the previous branch tip but NOT from HEAD are tagged.
  • Trigger: every checkout refreshes the tracking via git rev-parse @{-1} (the reflog-based "previous branch" pointer).
  • Rendering: a CSS class commit-row.incoming paints the row; ref badges pointing to the previous branch get ref-from-prev (italic + amber).
  • Lifecycle: session-scoped — switching branches again recomputes the set, so the highlight always reflects "what was on the branch I just came from".

Inspired by GitToolbox's "Show Unsynced Commits" and IntelliJ IDEA's Git Log incoming-change highlighting.

How is it different from GitLens / Git Graph?

Capability GitLens Git Graph (mhutchie) GitCanvas
Visual commit graph ⚠️ requires Pro ✅ Canvas-rendered
Commit panel (stage/unstage)
Interactive rebase UI ⚠️ partial
Hunk-level staging ⚠️ partial
Branch compare ⚠️
Inline blame
Changelists

GitCanvas is not a replacement for GitLens — it's the workflow half that GitLens doesn't cover. GitLens shows you what happened; GitCanvas helps you do the work.

Keyboard Shortcuts

Action Mac Windows/Linux
Open Git Graph Cmd+Shift+G Ctrl+Shift+G
Open Commit Panel Cmd+Shift+C Ctrl+Shift+C

Configuration

{
  "gitcanvas.language": "auto"  // "auto" | "en" | "zh-cn"
}

Roadmap

  • v0.1.0 — Git Graph + Commit Panel + Interactive Rebase + Branch Compare + Blame + Merge Conflicts + Changelists + Tags
  • v0.2.0 — Hunk-level staging polish, screenshot pack, publisher verification
  • v0.3.0 — GitHub/GitLab integration (PRs, issues inline)

Feedback & Issues

License

MIT


中文

为什么做 GitCanvas?

如果你从 JetBrains 系列 IDE(IntelliJ / WebStorm / RubyMine)切换到 VSCode,多半会遇到同一个坑:VSCode 自带的 Source Control 暂存变更没问题,但你在 IntelliJ 里习惯的可视化 Git 图谱、交互式 Rebase、一键提交面板——全没了。 GitLens 不错,但它只看不做。GitCanvas 就是把那块缺的拼图补上。

功能

  • 🎨 Git 图谱 — Canvas 渲染,10k+ commit 也丝滑。分支泳道、合并点、ref 标签(HEAD / 分支 / 标签 / 远程)。点击任一 commit 查看 diff、文件、作者、父提交。
  • 📝 提交面板 — JetBrains 风格。文件级或 hunk 级暂存/取消暂存。内联 diff、多行 commit message、历史 commit message 复用。
  • 🔀 交互式 Rebase — 拖拽调整 commit 顺序,squash / pick / reword / drop / edit 一个面板搞定,带冲突预览。
  • 🔧 分支对比、行内 Blame、合并冲突、变更列表、标签管理 — JetBrains 工具箱的其他部分,一个扩展搞定。
  • 🌐 多语言 — 英文 + 简体中文,自动跟随 VSCode。

截图

v0.2.0 会替换为真实截图。

Git 图谱 提交面板 交互式 Rebase
Git 图谱 提交面板 Rebase

切换分支高亮(Branch Switch Highlight)

从一个分支切换到另一个时,GitCanvas 会标记那些只存在于"上一个分支"的提交 — 用暖琥珀色背景 + 左侧 4px 色条 + message 末尾的 from <分支名> pill,让你能立刻看出之前那个分支还有哪些没合过来的工作。

上次分支独有的提交
Branch Switch Highlight

实现要点:

  • 数据源git rev-list HEAD..<previousBranchTip> — 只取"上次分支 tip 能走到、当前 HEAD 走不到"的 commit 集合。
  • 触发:每次 checkout 都用 git rev-parse @{-1}(reflog 里的"上一个分支"指针)刷新追踪状态。
  • 渲染:CSS class commit-row.incoming 给整行上色;指向 previous branch 的 ref badge 加 ref-from-prev(斜体 + 琥珀)。
  • 生命周期:会话级 — 每次切换都会重新计算,所以高亮始终是"你刚离开的那个分支独有的"。

参考了 GitToolbox 的 "Show Unsynced Commits" 和 IntelliJ IDEA 的 Git Log incoming-change 高亮。

和 GitLens / Git Graph 有什么不一样?

功能 GitLens Git Graph (mhutchie) GitCanvas
可视化 commit 图谱 ⚠️ 收费Pro ✅ Canvas渲染
提交面板(暂存/取消)
交互式 rebase UI ⚠️ 部分
Hunk 级暂存 ⚠️ 部分
分支对比 ⚠️
行内 blame
变更列表

GitCanvas 不是 GitLens 的替代品,而是 GitLens 不覆盖的那部分 workflow。GitLens 告诉你"发生了什么",GitCanvas 帮你"把活干完"。

快捷键

操作 Mac Windows/Linux
打开 Git 图谱 Cmd+Shift+G Ctrl+Shift+G
打开提交面板 Cmd+Shift+C Ctrl+Shift+C

配置

{
  "gitcanvas.language": "auto"  // "auto" | "en" | "zh-cn"
}

路线图

  • v0.1.0 — Git 图谱 + 提交面板 + 交互式 Rebase + 分支对比 + Blame + 合并冲突 + 变更列表 + 标签
  • v0.2.0 — Hunk 级暂存打磨、完整截图、publisher 认证徽章
  • v0.3.0 — GitHub/GitLab 集成(PR、Issue 内嵌)

反馈 & Issue

License

MIT

Related extensions