A persistent window into your working tree.
- Track worktree changes live as you work.
- See staged, unstaged, untracked, and conflicted changes in one view.
- Review commit-to-commit and merge-base differences.
- Read diffs in unified or side-by-side views with syntax highlighting.
- Search diffs and quickly move between matches and files.
- Navigate changes through a hierarchical file tree with Git status indicators.
- Stage, unstage, and safely discard changes.
- Jump directly from a diff to the changed location in your editor.
- Stay responsive when working with large diffs and files.
Dift is intentionally focused on keeping current Git changes visible and easy to review. It is not intended to become a full-featured Git client or replace tools like LazyGit, which already does that job pretty well.
Install from crates.io:
cargo install --locked diftInstall a prebuilt release for Linux, Windows, or macOS:
curl -fsSL https://gitlab.com/akhansari/dift/-/raw/main/install.sh | shDift is compatible with Git 2.47 and newer.
Run without a subcommand to watch worktree changes live.
dift [--config <CONFIG>] [--default-config] [SUBCOMMAND]
Commands:
diff Compare two commits or branch tips directly.
review Compare the merge base of BASE and HEAD with HEAD.
help Print this message or the help of the given subcommand(s)
Flags:
--config <CONFIG> Read a specific KDL configuration file.
--default-config Print the complete default KDL configuration and exit.
-h, --help Print help
-V, --version Print versionConfiguration path:
$XDG_CONFIG_HOME, when set.$HOME/.configon Unix-like systems.%APPDATA%or%USERPROFILE%\AppData\Roamingon Windows.
