mamediff
A TUI editor for managing unstaged and staged Git diffs. Inspired by Magit, this tool focuses on providing a simpler, specialized interface for staging, unstaging, and discarding diffs.

Installation
Pre-built binaries
Pre-built binaries for Linux and MacOS are available in the releases page.
// An example to download the binary for Linux.
$ VERSION=0.4.0
$ curl -L https://github.com/sile/mamediff/releases/download/v${VERSION}/mamediff-${VERSION}.x86_64-unknown-linux-musl -o mamediff
$ chmod +x mamediff
$ ./mamediff -h
With Cargo
If you have installed cargo (the package manager for Rust), you can install mamediff with the following command:
$ cargo install mamediff
$ mamediff -h
Usage
Just execute mamediff command within a Git directory.
The available key bindings will be displayed in the top-right corner of the window.
$ mamediff
->| Unstaged changes (1 files) | (q)uit [ESC,C-c]
: modified src/main.rs (1 chunks, -1 +1 lines) | (↓) [C-n]
: @@ -1,3 +1,3 @@ | (→) [C-f]
: fn main() { | (t)oggle [TAB]
: - println!("Hello, World!"); | (s)tage
: + println!("Hello, mamediff!"); | (D)iscard
: } +---- (H)ide -----
| Staged changes (0 files)
Configuration
You can customize key bindings and behavior using a configuration file:
$ mamediff --config /path/to/config.jsonc
Or set the MAMEDIFF_CONFIG_FILE environment variable to specify the default configuration file path.
You Might Also Be Interested In
- mamegrep: A TUI tool for
$ git grep