#git #editor #tool #interactive #rebase

app git-interactive-rebase-tool

Full feature terminal based sequence editor for git interactive rebase. Written in Rust using ncurses.

5 releases (1 stable)

✓ Uses Rust 2018 edition

1.0.0 Apr 10, 2019
0.7.0 Oct 28, 2018
0.6.0 Feb 13, 2018
0.5.0 Dec 29, 2017
0.4.0 Feb 11, 2017

#2 in Text editors

36 downloads per month

ISC license

71KB
2K SLoC

Crates.io Build Status Build status GitHub license

Git Interactive Rebase Tool

Native cross-platform full feature terminal based sequence editor for interactive rebase in Git 1.7.8+. Written in Rust using ncurses.

Git Interactive Rebase Tool

Install

Debian and derivatives

Install

Download the .deb file from the releases page and install. The executable will be installed to /usr/bin.

You may need to install ncurses with apt-get install libncurses5 if it is not satisfied.

Configure Git
git config --global sequence.editor interactive-rebase-tool

MacOS and OSX

Install
With Homebrew
brew install interactive-rebase-tool
Without Homebrew

Download the macos-interactive-rebase-tool from the releases page and copy it as interactive-rebase-tool to a location on your PATH.

Configure Git
git config --global sequence.editor interactive-rebase-tool

FreeBSD

Install
With pkg
pkg install interactive_rebase_tool
From ports
cd /usr/ports/devel/interactive_rebase_tool && make install clean
Configure Git
git config --global sequence.editor interactive-rebase-tool

Windows

Note: Windows binaries are not fully tested. If you are having issues please report them.

Install

Download the tool from the releases page and save it to a known location.

Configure Git
git config --global core.editor "'C:/path/to/interactive-rebase-tool'"

From source

Install

With Rust's package manager cargo, you can install git-interactive-rebase-tool via:

cargo install git-interactive-rebase-tool
Configure Git

Cargo adds git-interactive-rebase-tool automatically to your PATH, so you can simply run:

git config --global sequence.editor interactive-rebase-tool

Usage

interactive-rebase-tool <rebase-todo-filepath>
interactive-rebase-tool --help
interactive-rebase-tool --version

Getting Help

The tool has built-in help that can be accessed by hitting the ? key.

Key Bindings

Key Description
Up Move selection up
Down Move selection down
Page Up Move selection up five lines
Page Down Move selection down five lines
q Abort interactive rebase
Q Immediately abort interactive rebase
w Write interactive rebase file
W Immediately write interactive rebase file
? Show help
c Show commit information
j Move selected commit down
k Move selected commit up
p Set selected commit to be picked
r Set selected commit to be reworded
e Set selected commit to be edited
s Set selected commit to be squashed
f Set selected commit to be fixed-up
d Set selected commit to be dropped

Temporary Override

You can temporarily use a different sequence editor by using the GIT_SEQUENCE_EDITOR environment variable:

GIT_SEQUENCE_EDITOR=emacs git rebase -i [<upstream> [<branch>]]

Configuration

The tool can be configured using the git config command. Invalid values are ignored and the default used instead. String values are case-insensitive.

Example

git config --global interactive-rebase-tool.foregroundColor black

Options

Key Default Type Description
autoSelectNext false bool If true, auto select the next line after action modification
foregroundColor white Color Color used for most text and the UI
indicatorColor cyan Color Color used for text the indicates or needs to standout
errorColor red Color Color used for showing error messages
diffAddColor green Color Color used for lines and files added in a diff
diffRemoveColor red Color Color used for lines and files removed in a diff
diffChangeColor yellow Color Color used for lines and files changed in a diff
pickColor green Color Color used for the pick action
rewordColor yellow Color Color used for the reword action
editColor blue Color Color used for the edit action
squashColor cyan Color Color used for the squash action
fixupColor magenta Color Color used for the fixup action
dropColor red Color Color used for the drop action

Valid Color Values

The valid colors are the eight original 8 ANSI colors. They are black, blue, cyan, green, magenta, red, white and yellow. Each terminal controls the exact color for these color names.

Development

Install Rust

To start developing the project you will need to install Rust, which can generally be done using rustup.

Setup

Debian and derivatives

You will need build-essential and libncurses5-dev to build the project. Additionally, you will need pkg-config and liblzma-dev if you wish to build a release. They can be installed using apt-get:

sudo apt-get install build-essential libncursesw5-dev
sudo apt-get install pkg-config liblzma-dev

Build and run

Use cargo to build and run the project. From the project root run:

# only build
cargo build --release
# build and run
cargo run <path-to-git-rebase-todo-file>

Release

Install Cargo Deb
cargo install cargo-deb
Building
cargo build --release
cargo deb

A deb file will be written to target/debian/interactive-rebase-tool_*.deb.

TODO

  • Full support for exec action
  • Insert action
  • Configure key bindings

Related Projects

License

Git Interactive Rebase Tool is released under the ISC license. See LICENSE.

Dependencies

~9.5MB
~206K SLoC