Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

bahdotsh/giff

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

76 Commits

Repository files navigation

giff

A terminal UI for git diffs with interactive rebase support.

CI Crates.io License

giff demo


Features

  • Side-by-side & unified diffs — toggle between layouts with a single key
  • Syntax highlighting — language-aware coloring for 130+ languages via syntect
  • Dark & light themes — built-in themes with full customization through config
  • Interactive rebase — accept or reject individual changes, then commit
  • Rebase detection — notifies you when your branch is behind or has diverged
  • Vim-style navigation — keyboard-first with mouse scroll support
  • Help overlay — press ? anywhere to see all keybindings in context
  • Configurable — persistent settings via ~/.config/giff/config.toml

Syntax highlighting

Rust syntax highlighting

Unified view

Unified diff view

Light theme

Light theme

Help overlay

Help overlay

Install

cargo install giff

Or build from source:

git clone https://github.com/bahdotsh/giff.git
cd giff && cargo build --release

Usage

giff # uncommitted changes vs HEAD
giff main feature-branch # diff between two refs
giff main # diff ref against working tree
giff --theme light # override theme
giff -d "--stat" # pass custom git diff args
giff --auto-rebase # auto-rebase if behind upstream

Keybindings

Diff mode

Key Action
j / k Navigate down / up
PageDown / PageUp Page down / up
Home / End Jump to first / last item
Tab Toggle focus between file list and diff
h / l Focus file list / diff content
u Toggle unified / side-by-side view
t Toggle dark / light theme
r Enter rebase mode
? Show help
q / Esc Quit

Rebase mode

Key Action
j / k Next / previous change
a / x Accept / reject change
n / p Next / previous file with changes
c Commit accepted changes
? Show help
Esc Cancel rebase

Mouse

Scroll wheel works in both the file list and diff panes.

Configuration

~/.config/giff/config.toml

theme = "your_custom_theme_name"
[themes.your_custom_theme_name]
base = "dark"
accent = "#89b4fa"
fg_added = "#a6e3a1"
fg_removed = "#f38ba8"

See the built-in dark and light themes in src/ui/theme.rs for all available color keys.

Contributing

Contributions welcome — feel free to open an issue or submit a PR.

License

MIT or Unlicense, at your option.

About

A terminal-based Git diff viewer with interactive rebase capabilities

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /