blazing fast terminal-ui for git written in rust
- fast and intuitive key only control
- context based help (no need to remember tons of hot-keys)
- inspect/commit/amend changes (incl. hooks: commit-msg/post-commit)
- (un)stage files/hunks, revert/reset files/hunk
- stashing (save, apply, drop, inspect content)
- browse commit log, diff committed changes
- scalable terminal ui layout
- async input polling and
- async git API for fluid control
For a RustBerlin meetup presentation I compared lazygit,tig and gitui parsing the entire linux git repository (~900k commits):
lazygit | tig | gitui | |
---|---|---|---|
time | 57s | 4m 20s | 24s |
mem | 2.6 gb | 1.3 gb | 170 mb |
binary | 16 mb | 600 kb | 1.4 mb |
freezes | yes | soso | no |
crashes | sometimes | no | no |
presentation slides: https://github.com/extrawurst/gitui-presentation
- no support for pull/push yet (see #90)
- no support for bare repositories (see #100)
- core.hooksPath config not supported
- revert/reset hunk in working dir (see #11)
I do most of my git usage in a terminal but I frequently found myself using git UIs for some use cases like: index/commit, diff, stash and log.
Over the last 2 years my go-to GUI tool for this was fork because it was not bloated, snappy and free. Unfortunately the free part will change soon and so I decided to build a fast & simple terminal tool myself to copy the fork features i am using the most.
TL;DR
This tool is not intended to fully substituted the git shell - they are supposed to work in tandem (for now).
disclaimer
gitui
is currently lacking features that are escential for working with git like push/pull (see known limitations above). The priorities are on features that are making me mad when done on the git shell. Then I will focus on features that eventually could lead to making gitui
a one stop solution to get rid of the shell entirely - but for that I need help - this is just a sparetime project right now.
All support is welcomed! Sponsors aswell ❤️!
For the time being this product is considered alpha and not production ready.
There is an AUR package for gitui
:
git clone https://aur.archlinux.org/gitui.git
cd gitui
makepkg -si
sudo dnf install gitui
brew install extrawurst/tap/gitui
see releases
install latest rust
/cargo
: https://www.rust-lang.org/tools/install
the simplest way to start playing around with gitui
is to have cargo
build/install it:
cargo install gitui
to enable logging:
gitui -l
this will log to:
$HOME/Library/Caches/gitui/gitui.log
(mac)$XDG_CACHE_HOME/gitui/gitui.log
(linux usingXDG
)$HOME/.cache/gitui/gitui.log
(linux)
In general gitui
should automatically work on dark
and light
terminal themes.
However you can customize everything to your liking: see THEMES.md
- https://github.com/jesseduffield/lazygit
- https://github.com/jonas/tig
- https://github.com/git-up/GitUp (would be nice to comeup with a way to have the map view available in a terminal tool)