git history, re-indexed

Navigate git history by structure, not by date.

Lattice reads your commit graph as a lattice of branches, merges and file flows, so you can jump to the change you are looking for instead of scrolling backwards through time.

Works with
git 2.30+
Platform
macOS, Linux, Win
Size
3.4 MB, no deps
lattice — zsh
lattice ~/apps/checkout branch history --until-merge
reading commit graph · 41,208 commits · 19 branches
┌─ main 2 commits ago
├─ pay/inline merged into main
└─ pay/inline branch · 24 changed files
lattice open pay/inline
open pay/inline@3 commit in file view

What it does

A history you can move through, not just read backwards.

Lattice indexes the graph once, then answers the questions a senior engineer actually asks when tracing a regression.

Branch-aware graph

Branches and merges are treated as first-class nodes, so a feature branch reads as a connected path rather than a trail of detached commits.

Jump to the change

Navigate straight to a commit, its parents and everything it touched. No more guessing which of the last thirty commits introduced the behaviour.

File-flow diffs

See a file as a lattice of edits across branches at once, instead of running five separate diffs to reconstruct the story.

Offline by default

The index lives in your repo. No daemon, no remote, no account. Start a search the instant the command runs.

Scriptable output

Pipe results into jq or your own tooling. Every command can emit JSON when you want to drive a pipeline rather than read a screen.

Keyboard first

A compact set of keys gets you from root to leaf without leaving the keyboard. Mouse is optional.

How it works

A single pass, then everything is reachable.

  • 01
    Index the graphLattice walks the commit DAG once and records branch and merge edges. It caches alongside your history, so it stays cheap on the next run.
  • 02
    Query by shapeAsk for commits on a branch up to a merge, or all changes to a file across branches. Lattice answers from the index, not the reflog.
  • 03
    Land on the changeOpen any node in a file view to see every edit to a path on that branch, in one place.
1# find the last change to this file on the branch
2lattice find src/pay/inline.go on pay/inline
3→ 3 commits touched this file on the branch
4
5lattice open pay/inline @file
6src/pay/inline.go · 24 edits across 19 commits
7most recent edit · 2 hours ago · M. Rivera
8
9you are now on the node. arrows move the tree.
"I stopped grepping the reflog. Lattice shows me the branch path to a change in one look."
Ada Kim — staff engineer, payments infra

Install

Read your history the way it was written.

Download the single binary, or install it and index your first repo in seconds.

curl -fsSL get.lattice.dev | sh