Features

Everything you need to work git visually

A canvas-rendered commit graph, drag-and-drop operations, and a full working-tree workflow — all backed by your real git.

Swimlane commit tree

A lane for every branch

Each branch is drawn in its own coloured lane in a visual DAG, laid out in Rust and painted on canvas so it stays smooth at thousands of commits.

Drag-and-drop branch operations

Drag a ref. Pick the move.

Grab any branch ref and drop it onto another. GitLane inspects the two refs and offers exactly the operations that make sense — fast-forward, merge, rebase, or reset — and nothing that doesn’t.

No memorizing flags, no reaching for the docs mid-rebase. The graph animates the result so you can see exactly what happened.

main
feature/graph
feature/graph → main
Fast-forward
Merge
Rebase
Reset
Your real git

GitLane never does git behind git’s back

Every write — commit, merge, rebase, push, stash — shells out to your actual git binary. Reads use libgit2 for speed, but nothing is ever reimplemented behind your back.

So your hooks fire, your credential helpers run, your commits get signed with your key, and your .gitconfig and conflict machinery all behave exactly as they do on the command line.

Pre-commit hooksGPG / SSH signingCredential helpers.gitconfig aliasesConflict machinery
passthrough
$ git commit -S -m "fix watcher"
→ runs your git · your pre-commit hook · your signing key
Pull requests · multi-account

PRs across every account

Browse pull requests, diffs, and CI checks through the GitHub CLI, without leaving the graph. Per-repo account binding lets you juggle multiple accounts and hosts at once.

Tokens never leave the Rust core. GitHub is first-class; other forges get clear guidance rather than silent failures.

Pull requests
aw
OPEN
Virtualize the commit graph
#128 · feature/graph
MERGED
Filesystem watcher
#124 · fix/watcher
OPEN
Signed-commit profiles
#131 · feat/identity
Two-tier identity

Never commit with the wrong email

Reusable commit profiles — name, email, signing key — are kept separate from your provider accounts.

So you never accidentally commit to a client repo with a personal address, or push with an unverified signature. Bind a profile per repo and forget about it.

Commit profile
Work
signing key 4A9F…C21
d
Provider account
@dana-acme
github.com
Everyday power tools

The full working-tree workflow

src/graph.rs · unified
+5-2
1 fn reserve_lane(&mut self, id: Oid) -> usize {
2- self.lanes.push(id);
3- self.lanes.len() - 1
4+ if let Some(i) = self.free.pop() {
5+ self.lanes[i] = Some(id);
6+ return i;
7+ }
8 }

Unified & split diffs · syntax highlighting · stage by hunk or line

Staging workspace

Stage by file, hunk, or line. Amend, reword, and sign — all from one commit panel.

Unified & split diffs

Read changes your way, with syntax highlighting and word-level intraline diffs.

Stash management

Push, pop, and inspect stashes as first-class entries right on the graph.

Git worktrees

Check out multiple branches at once in separate working directories.

Integrated terminal

Drop into a shell in the repo without leaving the window — the graph stays in sync.

Always live

A filesystem watcher syncs the UI when you commit or stage from the terminal. No refresh.

Try the graph you can drag

A ~10 MB native download. Free and open source under GPL-3.0.