difv
Review and tweak your Git changes side by side, in the terminal.
Three panes: your changed files, HEAD, and the working tree. The working-tree
pane is an editor — fix the small things while you review, save, move on. Its
right edge is a ruler of the whole file, so every change is on screen even when
the lines are not. Built to be used while the files are still moving under it:
another editor, a formatter, a rebase.
┌ Changes (4) ────────┬ HEAD / Before ──────────┬ Working Tree / Current ─────┐
│ M src/auth.ts │ 1 const timeout = 3000 │ 1 const timeout = 5000 │
│ D src/old.ts │ 2 oldCall() │ 2 newCall() │
│ M src/user.ts │ │ 3 anotherLine() │
│ A src/utils.ts │ 3 return user │ 4 return user │
└─────────────────────┴─────────────────────────┴─────────────────────────────┘
[settings ,] [help ?] 1-4/4
Install
Or, with a Rust toolchain (1.88+):
Apple Silicon macOS and Linux. git has to be on your PATH.
Use
Run difv inside a Git repository, or difv <path> to point it at one you are
not standing in. A directory only says which repository — the list is the whole
repository's changes either way — and a file says which repository and which
file to open on.
- Click, scroll, or arrow around; drag a border to resize; drag to select and
Ctrl+Cto copy from either side; right-click a file to copy its path. The right pane is editable: focus it and type.Ctrl+Ssaves,Ctrl+Zundoes,Escgets you back to the file list. ?shows every key.,opens the settings, which are also plain TOML in~/.config/difv/config.tomlwith every option explained.
License
MIT