ScriptsApr 14, 2026·3 min read

GitUI — Blazing-Fast Terminal UI for Git Written in Rust

GitUI brings a Rust-fast terminal interface to Git: browse commits, stage hunks, view diffs, manage branches, and resolve conflicts — all without leaving the keyboard. A great complement (or alternative) to lazygit.

TL;DR
GitUI is a keyboard-driven terminal Git interface written in Rust for speed.
§01

What it is

GitUI is a terminal user interface for Git written in Rust. It lets you browse commits, stage individual hunks, view diffs, manage branches, and resolve merge conflicts entirely from the keyboard without leaving your terminal. It renders instantly even on large repositories thanks to Rust's performance.

GitUI targets developers who prefer the terminal over GUI Git clients but want more visual feedback than raw Git commands provide. It is a complement or alternative to lazygit, offering a similar TUI experience with a focus on speed and low resource usage.

§02

Why it saves time or tokens

Staging specific hunks or lines with git add -p is tedious and error-prone. GitUI provides a visual diff view where you select exactly what to stage with arrow keys. Browsing commit history, comparing branches, and managing stashes all happen without typing Git commands. For developers using AI agents, GitUI provides a fast way to review and stage the changes an agent made before committing.

§03

How to use

  1. Install GitUI: brew install gitui (macOS), cargo install gitui, or download the binary
  2. Run gitui in any Git repository
  3. Navigate with keyboard shortcuts: Tab to switch panels, Enter to stage, c to commit
§04

Example

# Launch GitUI in your repo
cd my-project
gitui

# Keyboard shortcuts:
# Tab     - Switch between panels
# Enter   - Stage/unstage file or hunk
# c       - Open commit dialog
# d       - View diff
# b       - Branch management
# l       - View log
# q       - Quit
PanelPurpose
StatusModified/staged files
LogCommit history graph
StashingSave/restore work in progress
DiffLine-by-line changes
BranchesCreate, switch, merge, delete
§05

Related on TokRepo

§06

Common pitfalls

  • GitUI key bindings differ from lazygit; switching between them requires relearning shortcuts
  • Large binary files in the diff view can cause slow rendering; add them to .gitattributes to mark as binary
  • GitUI does not support Git LFS operations directly; use the Git CLI for LFS-specific commands

Frequently Asked Questions

How does GitUI compare to lazygit?+

Both are terminal Git UIs. GitUI is written in Rust with a focus on startup speed and low memory usage. lazygit is written in Go with a slightly richer feature set and more customization options. Performance on large repos favors GitUI. Feature completeness slightly favors lazygit. Both are actively maintained.

Does GitUI support interactive rebase?+

GitUI supports basic rebase operations. For complex interactive rebases with reordering, squashing, and editing, you may need to drop to the Git CLI. GitUI's rebase support covers the most common cases like rebasing onto a branch.

Can I customize GitUI key bindings?+

Yes. GitUI supports a configuration file (key_bindings.ron) where you can remap keys to match your preferences. The config file uses the RON format. Place it in your platform's config directory and GitUI picks it up on startup.

Does GitUI work on Windows?+

Yes. GitUI is cross-platform and runs on Windows, macOS, and Linux. The Rust binary compiles natively for all platforms. On Windows, it works in CMD, PowerShell, and Windows Terminal with full color and Unicode support.

How do I stage individual lines in GitUI?+

Open the diff view for a file, navigate to the hunk you want, and press Enter to stage the entire hunk. For line-level staging, select individual lines within a hunk using the selection keys and stage only those lines. This provides fine-grained control over what goes into each commit.

Citations (3)
  • GitUI GitHub— GitUI is a blazing-fast terminal UI for Git written in Rust
  • Git Docs— Git staging and diff operations
  • Rust— Rust programming language for performance-critical applications

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets