Skip to content
/ gitui Public
forked from extrawurst/gitui

blazing fast terminal-ui for git written in rust

License

Notifications You must be signed in to change notification settings

pooyaw/gitui

 
 

Repository files navigation

CI crates MIT UNSAFE ITCH

blazing fast terminal-ui for git written in rust

features

  • 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

benchmarks

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

known limitations

motivation

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.

expectation management

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 ❤️!

installation

For the time being this product is considered alpha and not production ready.

Arch Linux

There is an AUR package for gitui:

git clone https://aur.archlinux.org/gitui.git
cd gitui
makepkg -si

Fedora

sudo dnf install gitui

homebrew (macos)

brew install extrawurst/tap/gitui

release binaries

see releases

install from source

requirements

install latest rust/cargo: https://www.rust-lang.org/tools/install

cargo install

the simplest way to start playing around with gitui is to have cargo build/install it:

cargo install gitui

diagnostics

to enable logging:

gitui -l

this will log to:

  • $HOME/Library/Caches/gitui/gitui.log (mac)
  • $XDG_CACHE_HOME/gitui/gitui.log (linux using XDG)
  • $HOME/.cache/gitui/gitui.log (linux)

color theme

In general gitui should automatically work on dark and light terminal themes. However you can customize everything to your liking: see THEMES.md

inspiration

About

blazing fast terminal-ui for git written in rust

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 99.6%
  • Makefile 0.4%