Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/extrawurst/gitui
Blazing π₯ fast terminal-ui for git written in rust π¦
https://github.com/extrawurst/gitui
async bash command-line-interface command-line-tool git hacktoberfest rust terminal tui
Last synced: 6 days ago
JSON representation
Blazing π₯ fast terminal-ui for git written in rust π¦
- Host: GitHub
- URL: https://github.com/extrawurst/gitui
- Owner: extrawurst
- License: mit
- Created: 2020-03-16T14:38:01.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-05-22T16:37:21.000Z (6 months ago)
- Last Synced: 2024-05-22T18:02:26.640Z (6 months ago)
- Topics: async, bash, command-line-interface, command-line-tool, git, hacktoberfest, rust, terminal, tui
- Language: Rust
- Homepage:
- Size: 60.6 MB
- Stars: 17,501
- Watchers: 91
- Forks: 538
- Open Issues: 164
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
- stars - extrawurst/gitui - ui for git written in rust π¦ (HarmonyOS / Windows Manager)
- awesome-blazingly-fast - gitui - Blazing π₯ fast terminal-ui for git written in rust π¦ (Rust)
- awesome-tuis - gitui - ui for git written in rust (Table of Contents)
- Awesome - GitUI - GitUI provides you with the comfort of a git GUI but right in your terminal. Fast terminal-ui for git written in rust. (Communication and Collaboration Tools / Version Control, Wiki, Knowledge base)
- awesome-rust-tools - gitui - ui for git written in rust. (Dev-Utilities)
- awesome-ccamel - extrawurst/gitui - Blazing π₯ fast terminal-ui for git written in rust π¦ (Rust)
- awesome-github-repos - extrawurst/gitui - Blazing π₯ fast terminal-ui for git written in rust π¦ (Rust)
- awesome-rust - gitui - Blazing fast terminal client for git. [![build](https://github.com/extrawurst/gitui/workflows/CI/badge.svg?branch=master)](https://github.com/extrawurst/gitui/actions) (Applications / System tools)
- awesome-rust-cn - gitui - (εΊη¨η¨εΊ Applications / η³»η»ε·₯ε · System tools)
- vim-keybindings-everywhere-the-ultimate-list - GitUI - GitUI provides you with the comfort of a git GUI but right in your terminal. (Source Code Management)
- awesome-starred - extrawurst/gitui - Blazing π₯ fast terminal-ui for git written in rust π¦ (hacktoberfest)
- awesome-devtools - gitui - A command line git gui (Command line - Linux / Learning resources)
- awesome-list - gitui - ui for git written in rust π¦ | extrawurst | 5363 | (Rust)
- awesome-alternatives-in-rust - gitui - Blazing fast terminal-ui for git written in Rust π¦ (Applications / Utilities)
- awesome-rust - gitui - Blazing fast terminal client for git. [![build](https://github.com/extrawurst/gitui/workflows/CI/badge.svg?branch=master)](https://github.com/extrawurst/gitui/actions) (Applications / System tools)
- awesome-hacking-lists - extrawurst/gitui - Blazing π₯ fast terminal-ui for git written in rust π¦ (Rust)
- my-awesome - extrawurst/gitui - line-interface,command-line-tool,git,hacktoberfest,rust,terminal,tui pushed_at:2024-10 star:18.4k fork:0.6k Blazing π₯ fast terminal-ui for git written in rust π¦ (Rust)
- project-awesome - extrawurst/gitui - Blazing π₯ fast terminal-ui for git written in rust π¦ (Rust)
- awesome-ratatui - gitui - Terminal UI for Git. (π» Apps / β¨οΈ Development Tools)
- StarryDivineSky - extrawurst/gitui
- jimsghstars - extrawurst/gitui - Blazing π₯ fast terminal-ui for git written in rust π¦ (Rust)
- fucking-awesome-rust - gitui - Blazing fast terminal client for git. [![build](https://github.com/extrawurst/gitui/workflows/CI/badge.svg?branch=master)](https://github.com/extrawurst/gitui/actions) (Applications / System tools)
- fucking-awesome-rust - gitui - Blazing fast terminal client for git. [![build](https://github.com/extrawurst/gitui/workflows/CI/badge.svg?branch=master)](https://github.com/extrawurst/gitui/actions) (Applications / System tools)
README
[![CI][s0]][l0] [![crates][s1]][l1] ![MIT][s2] [![UNSAFE][s3]][l3] [![TWEET][s6]][l6] [![dep_status][s7]][l7] [![discord][s8]][l8]
[s0]: https://github.com/extrawurst/gitui/workflows/CI/badge.svg
[l0]: https://github.com/extrawurst/gitui/actions
[s1]: https://img.shields.io/crates/v/gitui.svg
[l1]: https://crates.io/crates/gitui
[s2]: https://img.shields.io/badge/license-MIT-blue.svg
[s3]: https://img.shields.io/badge/unsafe-forbidden-success.svg
[l3]: https://github.com/rust-secure-code/safety-dance/
[s6]: https://img.shields.io/twitter/follow/extrawurst?label=follow&style=social
[l6]: https://twitter.com/intent/follow?screen_name=extrawurst
[s7]: https://deps.rs/repo/github/extrawurst/gitui/status.svg
[l7]: https://deps.rs/repo/github/extrawurst/gitui
[s8]: https://img.shields.io/discord/1176858176897953872
[l8]: https://discord.gg/rQNeEnMhusGitUI provides you with the comfort of a git GUI but right in your terminal
![](demo.gif)
1. [Features](#features)
2. [Motivation](#motivation)
3. [Benchmarks](#bench)
4. [Roadmap](#roadmap)
5. [Limitations](#limitations)
6. [Installation](#installation)
7. [Build](#build)
8. [FAQs](#faqs)
9. [Diagnostics](#diagnostics)
10. [Color Theme](#theme)
11. [Key Bindings](#bindings)
12. [Sponsoring](#sponsoring)
13. [Inspiration](#inspiration)
14. [Contributing](#contributing)
15. [Contributors](#contributors)## 1. Features [Top β²](#table-of-contents)
- Fast and intuitive **keyboard only** control
- Context based help (**no need to memorize** tons of hot-keys)
- Inspect, commit, and amend changes (incl. hooks: *pre-commit*,*commit-msg*,*post-commit*,*prepare-commit-msg*)
- Stage, unstage, revert and reset files, hunks and lines
- Stashing (save, pop, apply, drop, and inspect)
- Push / Fetch to / from remote
- Branch List (create, rename, delete, checkout, remotes)
- Browse / **Search** commit log, diff committed changes
- Responsive terminal UI
- Async git API for fluid control
- Submodule support
- gpg commit signing with shortcomings (see [#97](https://github.com/extrawurst/gitui/issues/97)))## 2. Motivation [Top β²](#table-of-contents)
I do most of my git work in a terminal but I frequently found myself using git GUIs for some use-cases like: index, commit, diff, stash, blame and log.
Unfortunately popular git GUIs all fail on giant repositories or become unresponsive and unusable.
GitUI provides you with the user experience and comfort of a git GUI but right in your terminal while being portable, fast, free and opensource.
## 3. Benchmarks [Top β²](#table-of-contents)
For a [RustBerlin meetup presentation](https://youtu.be/rpilJV-eIVw?t=5334) ([slides](https://github.com/extrawurst/gitui-presentation)) I compared `lazygit`,`tig` and `gitui` by parsing the entire Linux git repository (which contains over 900k commits):
| | Time | Memory (GB) | Binary (MB) | Freezes | Crashes |
| --------- | ---------- | ----------- | ----------- | --------- | --------- |
| `gitui` | **24 s** β | **0.17** β | 10 | **No** β | **No** β |
| `lazygit` | 57 s | 2.6 | 25 | Yes | Sometimes |
| `tig` | 4 m 20 s | 1.3 | **0.6** β | Sometimes | **No** β |## 4. Road(map) to 1.0 [Top β²](#table-of-contents)
These are the high level goals before calling out `1.0`:
* visualize branching structure in log tab ([#81](https://github.com/extrawurst/gitui/issues/81))
* interactive rebase ([#32](https://github.com/extrawurst/gitui/issues/32))## 5. Known Limitations [Top β²](#table-of-contents)
- no sparse repo support (see [#1226](https://github.com/extrawurst/gitui/issues/1226))
- no git-lfs support (see [#1089](https://github.com/extrawurst/gitui/discussions/1089))
- *credential.helper* for https needs to be **explicitly** configured (see [#800](https://github.com/extrawurst/gitui/issues/800))Currently, this tool does not fully substitute the _git shell_, however both tools work well in tandem.
The priorities for `gitui` are on features that are making me mad when done on the _git shell_, like stashing, staging lines or hunks. Eventually, I will be able to work on making `gitui` a one stop solution - but for that I need help - this is just a spare time project for now.
All support is welcomed! Sponsors as well! β€οΈ
## 6. Installation [Top β²](#table-of-contents)
GitUI is in beta and may contain bugs and missing features. However, for personal use it is reasonably stable and is being used while developing itself.
### Various Package Managers
Install Instructions
##### [Arch Linux](https://archlinux.org/packages/extra/x86_64/gitui/)
```sh
pacman -S gitui
```##### Fedora
```sh
sudo dnf install gitui
```##### Gentoo
Available in [dm9pZCAq overlay](https://github.com/gentoo-mirror/dm9pZCAq)```sh
sudo eselect repository enable dm9pZCAq
sudo emerge --sync dm9pZCAq
sudo emerge dev-vcs/gitui::dm9pZCAq
```##### [openSUSE](https://software.opensuse.org/package/gitui)
```sh
sudo zypper install gitui
```##### Homebrew (macOS)
```sh
brew install gitui
```##### [MacPorts (macOS)](https://ports.macports.org/port/gitui/details/)
```sh
port install gitui
```##### [Winget](https://github.com/microsoft/winget-pkgs/tree/master/manifests/s/StephanDilly/gitui) (Windows)
```
winget install gitui
```##### [Scoop](https://github.com/ScoopInstaller/Main/blob/master/bucket/gitui.json) (Windows)
```
scoop install gitui
```##### [Chocolatey](https://chocolatey.org/packages/gitui) (Windows)
```
choco install gitui
```##### [Nix](https://search.nixos.org/packages?channel=unstable&show=gitui&from=0&size=50&sort=relevance&query=gitui) (Nix/NixOS)
Nixpkg
```
nix-env -iA nixpkgs.gitui
```
NixOS
```
nix-env -iA nixos.gitui
```##### [Termux](https://github.com/termux/termux-packages/tree/master/packages/gitui) (Android)
```
pkg install gitui
```##### [Anaconda](https://anaconda.org/conda-forge/gitui)
```
conda install -c conda-forge gitui
```### Release Binaries
[Available for download in releases](https://github.com/extrawurst/gitui/releases)
Binaries available for:
#### Linux
- gitui-linux-x86_64.tar.gz (linux musl statically linked)
- gitui-linux-aarch64.tar.gz (linux on 64 bit arm)
- gitui-linux-arm.tar.gz
- gitui-linux-armv7.tar.gzAll contain a single binary file
#### macOS
- gitui-mac.tar.gz (arm64)
- gitui-mac-x86.tar.gz (intel x86)#### Windows
- gitui-win.tar.gz (single 64bit binary)
- gitui-win.msi (64bit Installer package)### Nightly Builds
see [NIGHTLIES.md](./NIGHTLIES.md)
## 7. Build [Top β²](#table-of-contents)
### Requirements
- Minimum supported `rust`/`cargo` version: `1.70`
- See [Install Rust](https://www.rust-lang.org/tools/install)- To build openssl dependency (see https://docs.rs/openssl/latest/openssl/)
- perl >= 5.12 (strawberry perl works for windows https://strawberryperl.com/)
- a c compiler (msvc, gcc or clang, cargo will find it)- To run the complete test suite python is required (and it must be invocable as `python`)
### Cargo Install
The simplest way to start playing around with `gitui` is to have `cargo` build and install it with `cargo install gitui --locked`. If you are not familiar with rust and cargo: [Getting Started with Rust](https://doc.rust-lang.org/book/ch01-00-getting-started.html)
### Cargo Features
#### trace-libgit
enable `libgit2` tracingworks if `libgit2` built with `-DENABLE_TRACE=ON`
this feature enabled by default, to disable: `cargo install --no-default-features`
## 8. FAQs [Top β²](#table-of-contents)
see [FAQs page](./FAQ.md)
## 9. Diagnostics [Top β²](#table-of-contents)
To run with logging enabled run `gitui -l`.
This will log to:
- macOS: `$HOME/Library/Caches/gitui/gitui.log`
- Linux using `XDG`: `$XDG_CACHE_HOME/gitui/gitui.log`
- Linux: `$HOME/.cache/gitui/gitui.log`
- Windows: `%LOCALAPPDATA%/gitui/gitui.log`## 10. Color Theme [Top β²](#table-of-contents)
![](assets/light-theme.png)
`gitui` should automatically work on both light and dark terminal themes.
However, you can customize everything to your liking: See [Themes](THEMES.md).
## 11. Key Bindings [Top β²](#table-of-contents)
The key bindings can be customized: See [Key Config](KEY_CONFIG.md) on how to set them to `vim`-like bindings.
## 12. Sponsoring [Top β²](#table-of-contents)
[![github](https://img.shields.io/badge/-GitHub%20Sponsors-fafbfc?logo=GitHub%20Sponsors)](https://github.com/sponsors/extrawurst)
## 13. Inspiration [Top β²](#table-of-contents)
- [lazygit](https://github.com/jesseduffield/lazygit)
- [tig](https://github.com/jonas/tig)
- [GitUp](https://github.com/git-up/GitUp)
- It would be nice to come up with a way to have the map view available in a terminal tool
- [git-brunch](https://github.com/andys8/git-brunch)## 14. Contributing [Top β²](#table-of-contents)
See [CONTRIBUTING.md](CONTRIBUTING.md).
## 15. Contributors [Top β²](#table-of-contents)
Thanks goes to all the contributors that help make GitUI amazing! β€οΈ
Wanna become a co-maintainer? We are looking for [you](https://github.com/extrawurst/gitui/issues/2084)!