Skip to content

bahdotsh/giff

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 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 = "dark"

[themes.custom]
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

Packages

 
 
 

Contributors

Languages