blog5 min read

Best Git GUI and TUI Tools for the Terminal

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

ToolTypeWhat it doesLanguage
lazygitFull TUIComplete Git managementGo
gituiFull TUIFast Git managementRust
tigViewerBrowse history/blameC
ghPlatform CLIGitHub operationsGo
glabPlatform CLIGitLab operationsGo
deltaDiff viewerSyntax-highlighted diffsRust
diff-so-fancyDiff viewerCleaner diff outputPerl
git-absorbCommit toolAuto-fixup commitsRust
git-branchlessWorkflow toolStacked diffsRust

Where to Start

  1. lazygit — install it, run lazygit in any repo, press ? for keybindings. You'll wonder how you used Git without it.
  2. delta — set it as your Git pager. Every diff you see from now on will be better.
  3. gh — if you use GitHub, gh pr create alone 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.

Find these tools on clihub

Browse install commands, star counts, and comparisons for every CLI tool mentioned in this article.

Related articles