Home

Awesome

diffnav

A git diff pager based on delta but with a file tree, à la GitHub.

<p align="center"> <img width="750" src="https://github.com/user-attachments/assets/3148be62-830a-484c-9256-2129ff10ca13" /> </p>

[!CAUTION] This is early in development, bugs are to be expected.

Feel free to open issues.

<details> <summary>Demo</summary> <img src="https://github.com/dlvhdr/diffnav/blob/74c3f341797ab121ce8edf785ef63e00075ce040/out.gif" /> </details>

Installation

Homebrew:

brew install dlvhdr/formulae/diffnav

Go:

go install github.com/dlvhdr/diffnav@latest

[!NOTE] To get the icons to render properly you should download and install a Nerd font from https://www.nerdfonts.com/. Then, select that font as your font for the terminal.

You can install these with brew as well: brew install --cask font-<FONT NAME>-nerd-font

Usage

Pipe into diffnav

Set up as global git diff pager

git config --global pager.diff diffnav

Configuration

Keys

KeyDescription
<kbd>j</kbd>Next file
<kbd>k</kbd>Previous file
<kbd>Ctrl-d</kbd>Scroll the diff down
<kbd>Ctrl-u</kbd>Scroll the diff up
<kbd>e</kbd>Toggle the file tree
<kbd>t</kbd>Search/go-to file
<kbd>q</kbd>Quit

Under the hood

diffnav uses:

Screenshots use: