Terminal GuideTerminal Guide
gitui icon

gitui

Git Tools
macOSLinuxWindows
Rust

Blazing fast Git TUI written in Rust.

Official Website

Features

FastIntuitive UIStagingStashingBlame

Installation

Homebrew
brew install gitui
Pacman (Arch)
pacman -S gitui
Cargo (Rust)
cargo install gitui

Why use gitui?

gitui is a fast Git TUI client written in Rust. Similar to lazygit in feel, it provides faster startup and lower memory consumption. With keyboard-focused design, it provides an efficient Git workflow.

Blazing Speed

Startup is extremely fast with Rust. Works smoothly even with large repositories.

Low Resource

Low memory consumption, comfortable operation even on older machines and low-spec environments.

Intuitive UI

Tab-based interface for quick switching between status, log, stash, and branches.

Async Operations

Fetch and push run in background. UI is never blocked.

Interface

[ Status ] Log Stashing Stashes Branches
──────────────────────────────────────────────────────────────
Unstaged Changes (2)
M src/main.rs
M README.md
Staged Changes (1)
A src/utils.rs
Diff
src/main.rs
- fn old_function() {
+ fn new_function() {
// implementation
- }
+ }
──────────────────────────────────────────────────────────────
[Enter] stage/unstage [c] commit [tab] switch pane [?] help

gitui's Status tab: File list on the left, diff on the right.

Basic Usage

Startup

Startup Commands
# Run inside Git repository
gitui

# Specify working directory
gitui -d /path/to/repo

# Specify log level (for debugging)
gitui --logging

# Specify theme
gitui --theme dark

Key Bindings

KeyActionDescription
TabSwitch tabsSwitch between Status/Log/Stashing/Stashes/Branches
1-5Direct tab jumpJump directly to corresponding tab with number keys
EnterStagingStage/unstage file
cCommitOpen commit dialog
CAmend commitAmend previous commit
pPushPush to remote
fFetchFetch from remote
FPullPull from remote
bBranch operationsOpen branch menu
sStashStash changes
DDiscard changesDiscard changes of selected file
?HelpShow key binding list
q / EscQuit/backClose dialog/exit gitui

Key Features

Status Tab (Staging Operations)

Staging operations at file and hunk level are possible.

Status Tab
# Operations in Status tab
Enter    # Stage/unstage file
a        # Stage all changes
d        # Show diff of selected changes
e        # Open file in external editor
D        # Discard changes (dangerous)
/        # Search files

# Hunk staging
Right    # Focus diff view
Enter    # Stage/unstage hunk
Up/Down  # Move between hunks

Log Tab (Commit History)

Log Tab
# Operations in Log tab
Enter    # Show commit details
c        # Tag commit
y        # Copy commit ID
r        # Revert
R        # Rebase
s        # Soft reset
h        # Hard reset (dangerous)
/        # Search commits

Branches Tab (Branch Management)

Branches Tab
# Operations in Branches tab
Enter    # Checkout branch
n        # Create new branch
d        # Delete branch
r        # Rename branch
m        # Merge selected branch
R        # Rebase onto selected branch

# Remote branches
Tab      # Toggle local/remote
f        # Fetch remote

Stashing Tab and Stashes Tab

Stash Operations
# Stashing tab (create stash)
s        # Stash current changes
Enter    # Stash with message

# Stashes tab (stash list)
Enter    # Show stash contents
a        # Apply stash
p        # Pop stash (apply and delete)
d        # Delete stash

Configuration & Customization

Configuration File Location

Configuration Files
# Configuration file location
# Linux/macOS: ~/.config/gitui/
# Windows: %APPDATA%/gitui/

# Configuration files
~/.config/gitui/key_bindings.ron  # Key bindings
~/.config/gitui/theme.ron         # Theme

Customize Key Bindings

key_bindings.ron (Vim-style)
// ~/.config/gitui/key_bindings.ron
(
    focus_right: Some(( code: Char('l'), modifiers: "")),
    focus_left: Some(( code: Char('h'), modifiers: "")),
    focus_above: Some(( code: Char('k'), modifiers: "")),
    focus_below: Some(( code: Char('j'), modifiers: "")),

    open_help: Some(( code: F(1), modifiers: "")),

    move_left: Some(( code: Char('h'), modifiers: "")),
    move_right: Some(( code: Char('l'), modifiers: "")),
    move_up: Some(( code: Char('k'), modifiers: "")),
    move_down: Some(( code: Char('j'), modifiers: "")),

    page_up: Some(( code: Char('u'), modifiers: "CONTROL")),
    page_down: Some(( code: Char('d'), modifiers: "CONTROL")),

    home: Some(( code: Char('g'), modifiers: "")),
    end: Some(( code: Char('G'), modifiers: "SHIFT")),
)

Customize Theme

theme.ron
// ~/.config/gitui/theme.ron
(
    selected_tab: Some(Reset),
    command_fg: Some(White),
    selection_bg: Some(Blue),
    selection_fg: Some(White),
    cmdbar_bg: Some(Black),
    cmdbar_extra_lines_bg: Some(Black),
    disabled_fg: Some(DarkGray),
    diff_line_add: Some(Green),
    diff_line_delete: Some(Red),
    diff_file_added: Some(LightGreen),
    diff_file_removed: Some(LightRed),
    diff_file_moved: Some(LightMagenta),
    diff_file_modified: Some(Yellow),
    commit_hash: Some(Magenta),
    commit_time: Some(LightCyan),
    commit_author: Some(Green),
    danger_fg: Some(Red),
    push_gauge_bg: Some(Blue),
    push_gauge_fg: Some(Reset),
    tag_fg: Some(LightMagenta),
    branch_fg: Some(LightYellow),
)

Performance Comparison

ToolLanguageStartup SpeedMemory Usage
gituiRustVery FastLow
lazygitGoFastMedium
tigCVery FastLow

gitui leverages Rust's characteristics for excellent startup speed and memory efficiency.

Tips

  • *Press ? to show context-sensitive help
  • *Number keys (1-5) allow direct tab switching for quick navigation
  • *Press Enter in diff view for hunk-level staging
  • *Press e to launch external editor (uses $EDITOR or $GIT_EDITOR)
  • *Fetch and push run asynchronously, so the UI is never blocked
  • *For Vim-style key bindings, customize key_bindings.ron
Written by Dai AokiPublished: 2026-01-20

Related Articles

Explore More