Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>Git WaveNew to Visual Studio Code? Get it now.
Git Wave

Git Wave

rgro

|
2 installs
| (0) | Free
A fast git graph with worktrees. Lightweight, canvas-drawn history with lock-aware worktree management.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Git Wave

A fast git graph with worktrees.

CI Marketplace License: MIT

Git Wave showing a branch graph with a locked worktree, a stash, tags and the uncommitted changes row

Why

Git Graph is unmaintained, GitLens is heavy, and neither treats worktrees as first-class. Git Wave is a small, dependency-free extension that draws the graph on a canvas, renders only the rows on screen, and puts worktrees (including what is locked, and why) right in the picture.

Install

Search for Git Wave in the Extensions view, or:

code --install-extension rgro.git-wave
  • Graph view in the familiar lanes-and-curves style: branches, tags, remotes, and HEAD on a canvas-drawn graph with a virtualized commit list. Only the rows on screen are ever rendered, so 100k-commit repositories scroll smoothly.
  • Worktrees, everywhere. A Worktrees panel in the Source Control sidebar lists every worktree, which branch it has checked out, and whether it is locked (with the reason). The same worktrees show up on the graph as badges on their commits.
  • Lock / unlock / add / remove / prune worktrees from the sidebar or straight from a badge in the graph. Prunable (stale) worktrees are flagged.
  • Uncommitted changes row at the top with a dashed strand down to HEAD; select it to see the working-tree files and open their diffs.
  • Right-click actions on commits, branches, remote branches, tags, stashes and worktree badges: checkout, create branch, create tag, merge (fast-forward, merge commit, squash, ff-only), rebase, cherry-pick, revert, reset (soft/mixed/hard), rename, delete, apply/pop/drop stash, copy. Native VS Code menus, so they follow your theme and keybindings.
  • Worktree-aware checkout. Checking out a branch that lives in another worktree offers to open that worktree instead of failing.
  • Author avatars from GitHub (using your gh CLI login when available, so no rate-limit trouble) or Gravatar, with initials as a fallback.
  • Stashes appear as dashed nodes hanging off their base commit.
  • Commit details with changed files; click a file to open its diff. No dependency on the built-in Git extension.
  • Instant filter by message, author, hash, or ref name. Resizable Author and Date columns.
  • Wide histories scroll horizontally inside the graph column (shift+wheel or the slim scrollbar).
  • Auto-refreshes when refs, HEAD, the working tree, or worktree metadata change.

Usage

  • Command Palette: Git Wave: Open Graph, or the branch icon in the Source Control title bar.
  • The Worktrees view lives in the Source Control sidebar. Hover a worktree for its path, HEAD, and lock reason. Inline buttons lock/unlock and open the worktree in a new window.
  • In the graph, click the folder badge on a branch chip (or a dotted worktree chip for a detached worktree) for the worktree actions menu. A padlock on the badge means the worktree is locked.
  • Click a parent hash in the details pane to jump to it. ↑/↓ move the selection, Esc closes it.

Settings

Setting Default Description
gitwave.commitsPerPage 500 Commits fetched per page; more load as you scroll.
gitwave.showRemoteBranches true Include remote-tracking branches.
gitwave.showTags true Include tags.
gitwave.dateFormat relative relative, absolute, or iso.
gitwave.graph.laneWidth 14 Pixels per lane.
gitwave.graph.rowHeight 24 Row height in pixels.
gitwave.graph.colors 10 colours Lane colours, cycled.
gitwave.graph.visibleLanes 12 Lanes shown before the graph column scrolls horizontally.
gitwave.avatars true Show author avatars.

Development

npm install
npm run build        # bundles dist/extension.js and dist/webview.js with esbuild
npm test             # unit tests for the lane layout and git parsers (node:test)
npm run watch        # rebuild on change

Press F5 in VS Code to launch an Extension Development Host with Git Wave loaded. npm run package produces a .vsix you can install with code --install-extension.

Releasing

npm run release -- minor     # or patch / major / 1.2.3

That bumps the version, stamps the changelog, commits, tags vX.Y.Z and pushes. The Release workflow then runs the tests, publishes to the Marketplace, and attaches the .vsix to a GitHub release. It needs a VSCE_PAT repository secret (an Azure DevOps token with the Marketplace (Manage) scope).

How the graph is laid out

src/graph/layout.ts is a streaming lane allocator. Commits are fed in git's output order (children before parents) and each one yields a row: its lane, its colour, and the strands drawn between it and the row above. State is only the set of currently open lanes, so pages of commits can be appended without touching earlier rows. The webview draws the visible slice on a canvas and recycles a small pool of DOM rows for the text columns.

License

MIT. Git Wave is written from scratch and shares no code with other graph extensions.

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