Git is powerful but its CLI is notoriously unfriendly. Staging individual hunks, interactive rebase, merge conflict resolution — these are tedious with raw git commands. TUI (Terminal User Interface) tools add a visual layer without leaving the terminal.
Here are the Git tools worth knowing, from full TUIs to single-purpose utilities. Every tool links to its clihub listing.
Full Git TUIs
These give you a complete visual interface for Git inside your terminal. Instead of memorizing commands like git rebase -i HEAD~3 or git stash apply stash@{2}, you point at what you want and press a key.
lazygit — The Standard
The most popular Git TUI. Stage individual hunks with one keypress, interactive rebase by moving commits up/down, branch management, merge conflict resolution, stash management, and a visual commit graph. If you install one tool from this list, make it this one.
Why it's popular: It takes the 20 most common Git operations and makes them keyboard-driven instead of command-driven. No more looking up the syntax for git rebase -i or git stash pop.
brew install lazygit
gitui — Fast Alternative
Written in Rust. Faster startup and lower memory usage than lazygit. Similar feature set — staging, diffing, branching, stashing — but with a slightly different keyboard layout. Good choice if lazygit feels slow on large repos.
brew install gitui
tig — Lightweight Viewer
A text-mode interface for Git focused on viewing rather than editing. Excellent for browsing commit history, blame, diffs, and refs. Lighter than lazygit — it's more of a viewer than a full management tool.
brew install tig
GitHub & Platform Tools
gh — GitHub CLI
The official GitHub CLI. Create PRs, review issues, trigger workflows, check CI status, manage releases, and browse repos — all from the terminal. gh pr create, gh issue list, gh run view replace most GitHub web UI tasks.
brew install gh
gh auth login
glab — GitLab CLI
The equivalent of gh for GitLab. Create merge requests, manage issues, check pipelines, and interact with your GitLab instance from the command line.
brew install glab
Diff & Merge Tools
The default Git diff output is functional but hard to read — no syntax highlighting, no line numbers, no side-by-side view. These tools fix that.
delta — Syntax-Highlighted Diffs
Set it as your Git pager and every git diff, git log -p, and git show gets syntax highlighting, line numbers, and optional side-by-side view. The single biggest visual improvement you can make to your Git output.
Add to ~/.gitconfig:
[core]
pager = delta
[delta]
navigate = true
side-by-side = true
line-numbers = true
brew install git-delta
diff-so-fancy — Cleaner Diffs
An older alternative to delta. Removes the +/- line prefixes, adds section headers, and makes diffs more readable. Less configurable than delta but simpler to set up.
brew install diff-so-fancy
Commit & History Tools
Tools for managing commits, rewriting history, and working with stacked PRs.
git-absorb — Auto-Fixup Commits
Automatically figures out which staged changes belong to which previous commits and creates fixup commits for them. Saves time during code review when you need to amend multiple commits in a branch. Run git absorb, then git rebase -i --autosquash.
brew install git-absorb
git-branchless — Stacked Diffs
Adds stacked diff support to Git (similar to Phabricator's workflow or Graphite). Manage chains of dependent branches, rebase them as a stack, and submit them for review. Useful for teams that prefer small, incremental PRs.
cargo install --locked git-branchless
Comparison Table
| Tool | Type | What it does | Language |
|---|---|---|---|
| lazygit | Full TUI | Complete Git management | Go |
| gitui | Full TUI | Fast Git management | Rust |
| tig | Viewer | Browse history/blame | C |
| gh | Platform CLI | GitHub operations | Go |
| glab | Platform CLI | GitLab operations | Go |
| delta | Diff viewer | Syntax-highlighted diffs | Rust |
| diff-so-fancy | Diff viewer | Cleaner diff output | Perl |
| git-absorb | Commit tool | Auto-fixup commits | Rust |
| git-branchless | Workflow tool | Stacked diffs | Rust |
Where to Start
- lazygit — install it, run
lazygitin any repo, press?for keybindings. You'll wonder how you used Git without it. - delta — set it as your Git pager. Every diff you see from now on will be better.
- gh — if you use GitHub,
gh pr createalone is worth the install.
For a complete terminal setup including these tools, see The Developer's Terminal Setup Guide. For the full list of developer tools, see Best CLI Tools for Developers.
FAQ
Is lazygit or gitui faster?
gitui has faster startup time and uses less memory — it's written in Rust. lazygit has a larger feature set and a more active community. For most developers, the performance difference is negligible. Try both and pick the one whose keybindings feel right. lazygit has more tutorials and community resources available if you're starting out.
What about GitHub Desktop or GitKraken?
Those are GUI apps — graphical interfaces that run in their own windows. The tools in this article are TUIs — they run inside your terminal. TUIs are lighter, faster to launch, work over SSH, and integrate with your existing terminal workflow. GUI apps offer more visual features (drag-and-drop rebase, visual branch graphs) but require a separate application window. Many developers use both.
Can I use these tools with my IDE's Git integration?
Yes. These tools work alongside IDE Git features, not instead of them. Many developers use their IDE for simple commits and diffs, then switch to lazygit for rebasing, conflict resolution, and complex branch operations.
Do these work with Git forges other than GitHub?
lazygit, gitui, tig, delta, and the commit tools work with any Git repo regardless of forge. gh is GitHub-specific. glab is GitLab-specific. For Bitbucket, there's no equivalent TUI — use the web interface or the Bitbucket API directly.
Browse all Git tools on clihub — the directory for discovering command line tools.