# gitui

> Terminal-based Git GUI for staging, committing, branching, and repository management with keyboard-only control

Stars: 22.6k · Language: Rust · License: MIT · Categories: Git

- Repository: https://github.com/extrawurst/gitui
- Page: https://www.trmn.sh/tools/gitui
- Demo video: https://media.trmn.sh/demos/86bc5dc7f4f7dd52a042632d1c3e7b0ddf61ba4b9a76773735a70c3ae99ce4c2.mp4

## Install

- Homebrew: `brew install gitui`
- Cargo: `cargo install gitui --locked`
- Arch Linux: `pacman -S gitui`

## Overview

GitUI is a terminal user interface for Git operations that combines the visual benefits of GUI tools with the efficiency of terminal-based workflows. The tool provides keyboard-only control for common Git tasks including staging and unstaging files, hunks, and lines, managing commits and amendments, stashing operations, branch management, and push/fetch operations to remotes.

The application focuses on performance and responsiveness, particularly with large repositories. Benchmark comparisons show GitUI parsing the Linux kernel repository (900k+ commits) in 24 seconds using 0.17GB memory, significantly faster than alternatives like lazygit (57 seconds, 2.6GB) and tig (4 minutes 20 seconds, 1.3GB). The tool includes context-based help to reduce the need to memorize hotkeys.

Key features include commit log browsing with search capabilities, submodule support, GPG commit signing, customizable themes and key bindings, and an async Git API for fluid interaction. GitUI supports common Git hooks (pre-commit, commit-msg, post-commit, prepare-commit-msg) and provides detailed diff viewing for committed changes. The tool is designed for developers who want GUI-like Git functionality without leaving the terminal environment.

### Installation

```bash
# via Homebrew
brew install gitui
```

```bash
# via Cargo
cargo install gitui --locked
```

```bash
# via Arch Linux
pacman -S gitui
```

![GitUI terminal interface demonstration](https://media.trmn.sh/cached/accd8b1ff643a875edc96526545b9b4bf200a17fb5cf64d59e3a681ffe3dfc3d.gif)

## Alternatives

- [Jujutsu](https://www.trmn.sh/tools/jj.md): Git-compatible version control system with working-copy-as-a-commit, an operation log with undo, and automatic rebase of descendants. CLI is jj. (Rust, 32.3k stars)
- [delta](https://www.trmn.sh/tools/delta.md): Syntax-highlighting pager for git, diff, and grep output with side-by-side view and word-level diff highlighting (Rust, 32.6k stars)
- [gitoxide](https://www.trmn.sh/tools/gitoxide.md): Pure Rust implementation of Git, offered as the gix library crate plus gix and ein command-line binaries for testing the API and running workflow tools. (Rust, 12.1k stars)
- [onefetch](https://www.trmn.sh/tools/onefetch.md): Command-line tool that displays Git repository information and code statistics in terminal (Rust, 12.1k stars)
- [git absorb](https://www.trmn.sh/tools/git-absorb.md): Git subcommand that automatically creates fixup! commits from staged changes by finding the commit each hunk belongs to, with optional autosquash rebase. (Rust, 5.8k stars)

## Guides

- [A terminal git workflow with lazygit and delta](https://www.trmn.sh/guides/lazygit-delta-workflow): Install lazygit and delta, set delta as git's pager, render lazygit diffs with it, and stage hunks, commit and rebase from the keyboard.
- [lazygit Alternatives](https://www.trmn.sh/alternatives/lazygit): lazygit alternatives compared: gitui, gitu and tig as terminal Git UIs, plus forgit for fzf-based Git commands in Bash, Zsh and Fish.
- [Best Git TUIs](https://www.trmn.sh/best/git-tuis): Compare lazygit, gitui, tig and gitu: terminal Git interfaces for staging hunks and lines, committing, and managing branches.
- [lazygit vs gitui](https://www.trmn.sh/compare/lazygit-vs-gitui): lazygit (Go) vs gitui (Rust): two MIT-licensed terminal Git UIs compared on interface, speed on large repos, hooks and install options.

---

Canonical: https://www.trmn.sh/tools/gitui
