A Git client that hides the commits nobody points at.
Everything something points at keeps its row: branches, tags, worktrees, stashes and pull request state. Beside the graph, a diff between any two references and seventeen operations that predict their conflicts before they run.
macOS, Windows and Linux. Free and open source.
Or install it from npm with npm install --global git-nav, which skips the unsigned app warning.

Collapse the commits nothing points at
A branch, a remote branch, a tag, a worktree, a stash or your current checkout earns a commit its own row. Everything between them folds into one run that opens in place. Turn it off and the whole history is back, at the scroll position you left.


Diff any two references
Pick a branch, tag, commit or revision on each side and read the difference between them, either directly or from the point the two sides forked. The files you have read stay marked, keyed to the patch you read them at, so a rebase or a force push brings back only what actually changed.
- Split or unified, per tab
- Read a comparison without its whitespace
- Fold a file away from its header
- Filter down to what you have not read

Operations that say what they will do
Seventeen operations, from checkout and merge to rebase, cherry-pick, revert, reset and push, read off the two things you picked and offer only what applies to them. Each one predicts its conflicts before it runs and reports every reference it moved, with one button to put them back.

Delete the branches a squash merge left behind
git branch --merged never lists them. A squash merge rewrites the branch into one commit and leaves no ancestry to follow, so the branch reads as unmerged forever. Git Nav matches by content instead, and previews what it would delete grouped by reason: a merged pull request whose head matches your local tip, a branch with no commits ahead of the default branch, and a branch whose changes already sit on the default branch as one squashed commit.

And the rest of it
Every worktree, beside the repository
Opening a repository lists the worktrees checked out next to it and the branch each one holds. Open one in Git Nav, an editor, a terminal or the file manager.
Pull request state on the branch
A branch chip carries the pull request raised from it and whether it is open, merged or gone. It reads through the gh CLI, so it uses the GitHub login you already have.
Reachable from your tablet
git-nav serve --host 0.0.0.0 turns on sharing and prints a URL holding a token. The same repositories, read from another device on your network.
Tabs that survive the day
Graphs and diffs open in tabs you can split and drag. The layout is saved per repository, and a closed tab reopens from the keyboard.
Search that reaches the whole graph
Find a branch, tag or commit and land on it, including inside a collapsed run, which opens where it sits.
Updates that find you
The app looks for a new version in the background. An installed build updates itself from a signed release; an npm install tells you the command to run.
Install it
As an installer
A .dmg for macOS, a .exe for Windows, and .AppImage, .deb and .rpm for Linux, on both x64 and arm64. Once installed, the app updates itself from signed releases.
macOS, Windows and Linux. Free and open source.
The builds are not code signed yet. macOS blocks the first launch: open System Settings, then Privacy & Security, and choose Open Anyway. Windows shows a SmartScreen warning: choose More info, then Run anyway.
From npm
Installs the launcher and the binary for your platform, puts git nav on your path, and arrives without the quarantine flag a download carries, so nothing blocks the first launch.
npm install --global git-navgit nav .Read it from another device
Sharing serves the same app over HTTP and prints a URL holding a token, which the browser keeps as a cookie. Branch deletion and rebasing are reachable over the network, so leave authentication on unless the port is already protected.
git-nav serve --host 0.0.0.0