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><details> <summary>Demo</summary> <img src="https://github.com/dlvhdr/diffnav/blob/74c3f341797ab121ce8edf785ef63e00075ce040/out.gif" /> </details>[!CAUTION] This is early in development, bugs are to be expected.
Feel free to open issues.
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
git diff | diffnav
gh pr diff https://github.com/dlvhdr/gh-dash/pull/447 | diffnav
Set up as global git diff pager
git config --global pager.diff diffnav
Configuration
- Currently you can configure
diffnav
only through delta so check out their docs. - If you want the exact configuration I'm using - it can be found here.
Keys
Key | Description |
---|---|
<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:
- Bubble Tea for the TUI
delta
for viewing the diffed file
Screenshots use:
- kitty for the terminal
- tokyonight for the color scheme
- CommitMono for the font