Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>Lanefold Git GraphNew to Visual Studio Code? Get it now.
Lanefold Git Graph

Lanefold Git Graph

Preview

Eugene Gubenkov

|
1 install
| (0) | Free
A Git client built around the commit graph: see the git commands of every operation before it runs, undo it afterwards, and edit history visually.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Lanefold

Lanefold is a Git client for VS Code built around the commit graph. You browse history, run operations, edit commits and review changes from the graph. Before an operation runs, Lanefold shows the git commands it will use, and every change it makes to the repository can be undone.

Lanefold in VS Code: the commit graph with the branches pane, and uncommitted changes staged hunk by hunk

Features

History

  • A commit graph that streams history from git and stays responsive with millions of commits.
  • Views as tabs: all branches, the current branch, local branches or a single ref; file, folder and line history; comparisons between two refs; stashes, the reflog and statistics.
  • Details for one commit, two commits or a selection, with changed files that open in VS Code's diff editor.
  • Search by text, author (@name), hash (#1a2b3c), path (file:), message (message:) and date (after:, before:). Matches are highlighted, or the graph is filtered down to them.
  • Blame annotations with an age heat bar, and history for a file or a range of lines.
  • The history of every open repository in one graph.

Operations

  • Checkout, branches, tags, reset, revert, cherry-pick, merge and rebase, from menus or by dragging commits and branches in the graph.
  • A review before each operation: the git commands with an explanation of every flag, the refs that move, commits that would be left behind, and conflicts predicted with git merge-tree without touching the working tree.
  • Undo and Redo for every operation that changes the repository, rebases included. Uncommitted work that an operation could lose is saved first and restored exactly.
  • Uncommitted changes that are in the way of a checkout, revert or cherry-pick can be carried over.
  • Conflicts name both sides by branch, open in VS Code's merge editor, and are continued, skipped or aborted from a banner.

History editing

  • An interactive rebase editor in the graph: reorder, squash, fix up, reword, drop, stop to edit and split commits, with the keyboard or by drag and drop.
  • A dry run of each arrangement that predicts conflicts and empty commits before anything runs.
  • Amend any recent commit with the staged changes by dragging them onto it.
  • Split a commit by committing its changes in parts.

Changes and commits

  • Stage and unstage files, hunks or single lines in the details pane.
  • Commit, amend and sign off from the commit form; drafts are kept per repository.
  • Discard files, hunks or lines, with Undo.
  • Save, apply, pop and drop stashes.

Branches and remotes

  • A branches pane with folders, remotes, tags, favorites and ahead/behind counts.
  • Fetch, pull and push, with results in plain words. Force pushes always use --force-with-lease.
  • Add, edit and remove remotes. Credential prompts appear as VS Code input boxes.

More

  • Statistics for a branch or the whole repository: activity over time, a weekday by hour punch card, contributors, the most changed files and folders, languages and line counts.
  • Worktrees, submodules, visual bisect, patches, reflog recovery, clone and init.
  • The Git Console lists every git command Lanefold runs, with its output and timing.

Lanefold follows the VS Code theme, including high contrast, and works entirely from the keyboard.

Getting started

Lanefold needs VS Code 1.100 or later and git 2.30 or later. Conflict prediction needs git 2.40 or later.

Open it with Ctrl+Alt+G (Cmd+Alt+G on macOS) or run Lanefold: Open from the Command Palette.

Keyboard

Where Keys
Graph ↑ ↓ select, ← → go to a child or the parent, Enter open the changes, Shift+F10 menu, F2 reword
Graph Ctrl+F or / search, F3 next match, Ctrl+C copy hashes, Ctrl+Z undo, Ctrl+Shift+Z redo
History editor P pick, R reword, E edit, I split, S squash, F fixup, D drop, Alt+↑ ↓ move, Ctrl+Enter apply
Tabs Alt+← → move, F2 rename, Delete close
Blame Ctrl+Alt+[ annotate the previous revision, Ctrl+Alt+, back, Ctrl+Alt+. forward

Shift+click selects a range of commits and Ctrl+click adds one. In the history editor, dropping a commit onto another squashes it (Alt for fixup).

Settings

Setting Default What it does
lanefold.confirm destructive When to review an operation first: always, destructive or never.
lanefold.graph.style curved Curved or angular lanes.
lanefold.graph.density comfortable Row height: compact, comfortable or spacious.
lanefold.graph.colors none Your own lane colors (CSS colors) instead of the theme's palette.
lanefold.log.order topo Commit order of new views: topo keeps each branch together, date sorts by date.
lanefold.dateFormat relative Relative or absolute dates in the graph.
lanefold.views.defaultTabs All, HEAD The tabs a repository opens with the first time (HEAD shows the current branch).
lanefold.animations full full, reduced or off. The system's reduced motion setting always applies.
lanefold.avatars.gravatar off Load author avatars from Gravatar instead of showing initials.
lanefold.blame.ignoreWhitespace off Blame with -w: whitespace-only changes do not count.
lanefold.blame.detectMoves off Blame with -M: lines moved within a file keep their original author.
lanefold.git.path none The git executable. By default, the one VS Code's Git extension uses, then PATH.

Development

Requirements: Node.js 22 or later and git 2.30 or later.

npm install
npm run build        # the extension (esbuild) and the webview (Vite)
npm run typecheck
npm run lint
npm test             # unit tests and tests against real git repositories

Press F5 in VS Code ("Run Lanefold") to start an Extension Development Host. After npm run demo-repo -- out/demo, "Run Lanefold (demo repository)" opens a sample repository with branches, merges, tags and a remote.

Browser harness

The webview also runs in a browser, connected to the real backend over a WebSocket:

npm run demo-repo -- out/demo
npm run build:webview
npm run harness -- --repo out/demo/aurora
# open http://127.0.0.1:5177/?theme=light-modern

Repeat --repo (or &repo= in the URL) to open several repositories at once. The themes (dark-modern, light-modern, dark-hc, light-hc) are snapshots of the variables VS Code gives webviews, captured by the integration tests with LANEFOLD_CAPTURE_THEMES=dev/harness/themes.

Tests

Command What it covers
npm run test:unit Parsers, RPC, graph layout, planners and view logic
npm run test:git Core services against throwaway repositories built from fixtures
npm run test:e2e Playwright against the harness, including an accessibility audit of every view in four themes
npm run test:perf Performance budgets: a long history, very many refs, huge commits and working trees
npm run test:vscode The extension in a real VS Code (on Linux, run it with xvfb-run -a)

npm run package builds the VSIX, and npm run logo renders the PNG sizes of the logo from media/logo/lanefold.svg.

Architecture

src/shared     environment-independent code: protocol, models, RPC, graph topology and layout
src/core       Node only: git runner, repository model, operations and their journal, backend
src/extension  VS Code integration: activation, webview hosts, watchers, blame
src/webview    React app: graph, tabs and views, review sheet, history editor
dev/harness    browser harness server and VS Code theme snapshots
dev/perf       synthetic repositories for the performance budgets

ESLint enforces the module boundaries: src/shared imports neither Node nor VS Code, and the webview reaches the extension only through the typed RPC.

License

MIT

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