5.1 KiB
5.1 KiB
difi
Review and refine Git diffs before you push
Why difi?
git diff shows changes. difi helps you review them.
- ⚡️ Instant — Built in Go. Launches immediately with no daemon or indexing.
- 🎨 Structured — A clean file tree and focused diffs for fast mental parsing.
- 🧠 Editor-Aware — Jump straight to the exact line in
nvim/vimto fix issues. - ⌨️ Keyboard-First — Navigate everything with
h j k l. No mouse required.
Installation
Homebrew (macOS & Linux)
brew tap oug-t/difi
brew install difi
Go Install
go install github.com/oug-t/difi/cmd/difi@latest
AUR (Arch Linux)
Binary (pre-built):
pikaur -S difi-bin
Build from source:
pikaur -S difi
Manual (Linux / Windows)
- Download the binary from Releases and add it to your
$PATH.
Workflow
- Run difi in any Git repository.
- By default, it compares your current branch against main.
cd my-project
difi
Controls
| Key | Action |
|---|---|
Tab |
Toggle focus between File Tree and Diff View |
j / k |
Move cursor down / up |
h / l |
Focus Left (Tree) / Focus Right (Diff) |
e / Enter |
Edit file (opens editor at selected line) |
? |
Toggle help drawer |
q |
Quit |
Integrations
vim-fugitive
- The "Unix philosophy" approach: Uses the industry-standard Git wrapper to provide a robust, side-by-side editing experience.
- Side-by-Side Editing: Instantly opens a vertical split (:Gvdiffsplit!) against the index.
- Merge Conflicts: Automatically detects conflicts and opens a 3-way merge view for resolution.
- Config: Add the line below to if using lazy.nvim.
{
"tpope/vim-fugitive",
cmd = { "Gvdiffsplit", "Git" }, -- Add this line
}
difi.nvim
Get the ultimate review experience with difi.nvim.
- Auto-Open: Instantly jumps to the file and line when you press
ein the CLI. - Visual Diff: Renders diffs inline with familiar green/red highlights—just like reviewing a PR on GitHub.
- Interactive Review: Restore a "deleted" line by simply removing the
-marker. Discard an added line by deleting it entirely. - Context Aware: Automatically syncs with your
difisession target.
Git Integration
To use difi as a native git command (e.g., git difi), add it as an alias in your global git config:
git config --global alias.difi '!difi'
Now you can run it directly from git:
git difi
Contributing
git clone https://github.com/oug-t/difi
cd difi
go run cmd/difi/main.go
Contributions are especially welcome in:
- diff.nvim rendering edge cases
- UI polish and accessibility
- Windows support
Star History
Made with ❤️ by oug-t