A fast, keyboard-first Git diff reviewer for the terminal.
Review local changes, commits, patches, pager input, difftool pairs, and pull requests in one focused interface.
Homebrew on macOS or Linux:
brew install phongndo/tap/mark-cliOr use the portable installer on macOS or Linux. Both methods support
aarch64 and x86_64:
curl -fsSL https://raw.githubusercontent.com/phongndo/mark/main/scripts/install.sh | shUpdate with the same method used to install Mark:
brew upgrade mark-cli # Homebrew
mark update # portable installermark diff # local changes
mark compare main # workspace against main
mark compare main feature # two revisions
mark show HEAD~1 # one commit
mark review 123 # pull request
mark patch changes.diff # patch file
git diff | mark pager # pager input
mark diff --watch # live reloadRun a review command directly; bare mark currently exits without opening the
interface.
- Split and unified layouts with syntax highlighting.
- File filtering, diff search, expandable context, and full-file view.
- Inline line, hunk, and file annotations with reviewed-state tracking.
- Stable snapshots by default; continuous reload only with
--watch. - Custom themes, keybindings, and editor integration.
- Viewport-bounded rendering for very large diffs.
- Private local sessions for review automation, with no daemon or hosted state.
| Key | Action |
|---|---|
j / k | Move down / up |
[ / ] | Previous / next hunk |
Shift-Tab / Tab | Previous / next file |
f / / | Filter files / search the diff |
Enter | Add an annotation |
s | Toggle split / unified layout |
r | Reload |
? | Show all controls |
q | Quit |
Motions accept counts such as 3j.
Use Mark as a pager:
git config --global core.pager "mark pager"Use Mark as a difftool:
git config --global diff.tool mark
git config --global difftool.mark.cmd 'mark difftool -- "$LOCAL" "$REMOTE" "$MERGED"'Mark works without configuration. Run mark config to find the config file and
mark --help for the complete command list.
