# 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. ## Install Save as a script file and run: # GitUI — Blazing-Fast Terminal UI for Git ## Quick Use ```bash # macOS brew install gitui # Linux (Arch) sudo pacman -S gitui # Windows (Scoop) scoop install gitui # Cargo cargo install gitui --locked # Run inside any git repo gitui ``` ## Introduction GitUI is a Rust-powered terminal interface for Git, built around a single design goal: feel instant. Its `libgit2` backend makes operations like "status on a 100K-file repo" finish in milliseconds, and all features are keyboard-driven. With over 22,000 GitHub stars, GitUI is lazygit's main rival. Both are excellent; GitUI is faster on large repos and has a cleaner default layout, while lazygit has a slightly richer feature set and a larger community. ## What GitUI Does GitUI offers tabs for Status, Log, Files, Stashing, and Stash operations. Each tab is keyboard-navigable with `hjkl` or arrows. You can stage/unstage hunks with `Enter`, commit with `c`, push/pull with `P`/`p`, branch, rebase, and inspect history — all without typing `git` once. ## Architecture Overview ``` [GitUI (Rust + tui-rs)] | [libgit2 — fast Git backend] | +-----+-----+-----+-----+ | | | | | Status Log Files Branch Stash hunks graph tree rename/apply | [Keybinds] Vim-style navigation global "1-5" to jump tabs "?" shows context help | [Config] ~/.config/gitui/ theme.ron, key_bindings.ron ``` ## Self-Hosting & Configuration ```bash # Quick reference keybinds (press ? inside gitui) # 1 Status (stage/unstage/commit) # 2 Log (browse + reset/checkout) # 3 Files (explore + open) # 4 Stashing # 5 Stashes (apply/pop/drop) # e edit in $GIT_EDITOR # c commit # P push # p pull # b branches # t tags # s switch branch ``` ```ron // ~/.config/gitui/theme.ron — Catppuccin-ish colors ( selection_bg: Some(Rgb(69, 71, 90)), selection_fg: Some(Rgb(205, 214, 244)), cmdbar_bg: Some(Rgb(30, 30, 46)), cmdbar_extra_lines_bg: Some(Rgb(30, 30, 46)), branch_fg: Some(Rgb(245, 194, 231)), diff_line_add: Some(Rgb(166, 227, 161)), diff_line_delete: Some(Rgb(243, 139, 168)), ) ``` ## Key Features - **Instant on large repos** — libgit2 native, no Git CLI subprocess - **Stage/unstage hunks** — line-level granularity with Enter - **Interactive rebase support** — reorder / squash / edit commits via TUI - **Stash management** — create, apply, pop, drop stashes visually - **Branch + tag management** — create, rename, delete, checkout, merge - **Blame + file history** — inspect who changed what when - **Custom keymaps + themes** — RON-format config files - **GPG signing support** — respects your Git config ## Comparison with Similar Tools | Feature | gitui | lazygit | tig | gh dash | git-gui | |---|---|---|---|---|---| | Language | Rust | Go | C | Go | Tcl/Tk | | Backend | libgit2 | git CLI | libgit2 | git CLI | git CLI | | Speed on large repos | Best | Fast | Fast | Fast | Slow | | Feature breadth | Good | Best | Good (read-only focus) | Limited (GitHub-focused) | Basic | | Community size | Growing | Largest | Established | GitHub-specific | Legacy | | Best For | Speed-first terminal UI | Feature-rich TUI | Log/diff browsing | GitHub PRs | Legacy GUI | ## FAQ **Q: GitUI vs lazygit?** A: Both excellent. lazygit has more features and bigger community. GitUI is faster on large repos and cleaner UI. Try both, pick the one that fits your muscle memory. **Q: Does GitUI work over SSH?** A: Yes — it's a TUI, so run it in any terminal including SSH sessions. Install gitui on the remote or on your local machine against a mounted remote repo. **Q: Can it handle merge conflicts?** A: Yes, the Status tab marks conflicted files; press `e` to open your editor to resolve, then stage with `s`. For complex conflicts, many users still switch to a GUI. **Q: Does it support submodules / worktrees?** A: Yes — worktrees and submodule status show in the UI. Advanced operations still require the `git` CLI. ## Sources - GitHub: https://github.com/gitui-org/gitui - Author: extrawurst (Stephan Dilly) - License: MIT --- Source: https://tokrepo.com/en/workflows/a653bda2-380a-11f1-9bc6-00163e2b0d79 Author: Script Depot