
gitui is a blazing-fast terminal UI for git written in Rust. It provides a keyboard-driven interface for common git operations with minimal dependencies and excellent performance.

![gitui staging workflow](/tapes/gitui-intro.mp4)

## Features

- **Fast** - Written in Rust, starts instantly
- **Keyboard-driven** - No mouse required
- **Minimal dependencies** - Single binary
- **Async operations** - Non-blocking UI
- **Popup friendly** - Works great in tmux popups

## Setup

Install via package manager:

```bash
# Via mise (recommended)
mise install gitui

# Arch Linux
sudo pacman -S gitui

# macOS
brew install gitui

# Cargo
cargo install gitui
```

## Launching

```bash
gitui
```

Or from within a git repo with `Ctrl+G` (from zsh config).

## Key Bindings

### Global

| Key | Action |
|-----|--------|
| `?` | Help |
| `q` | Quit |
| `Tab` | Switch panel (Status, Log, Diff) |
| `1-3` | Jump to panel |

### Status Panel

| Key | Action |
|-----|--------|
| `↑/↓` | Navigate files |
| `Space` | Stage/unstage file |
| `Enter` | View diff |
| `a` | Stage all |
| `r` | Revert changes |
| `c` | Commit |
| `p` | Push |
| `f` | Pull/Fetch |
| `b` | Branch |
| `h` | Stash |

### Commit

| Key | Action |
|-----|--------|
| `c` | Open commit dialog |
| `Ctrl+s` | Submit commit |
| `Esc` | Cancel |

### Log Panel

| Key | Action |
|-----|--------|
| `↑/↓` | Navigate commits |
| `Enter` | View commit details |
| `r` | Revert commit |
| `e` | Edit past commit (rebase) |

### Branch

| Key | Action |
|-----|--------|
| `b` | Open branch list |
| `c` | Create branch |
| `d` | Delete branch |
| `m` | Merge branch |
| `Enter` | Checkout branch |

## tmux Integration

From `.tmux.conf`:

```bash
bind -n M-F display-popup -h 95% -w 95% -d '#{pane_current_path}' -E 'gitui'
```

Opens gitui in a popup with `Alt+Shift+F` for full-screen git operations.

From `.zshrc`:

```bash
bindkey -s '^g' 'gitui\n'
```

Opens gitui with `Ctrl+G` in current shell.

## Workflow

Typical git workflow with gitui:

1. **Edit files** in neovim
2. **Stage changes** with `Space` in gitui
3. **Review diff** with `Enter`
4. **Commit** with `c` and write message
5. **Push** with `p`

All without leaving the terminal or using a mouse.

## Comparison with lazygit

gitui is my primary git TUI because:

- **Simpler** - Less configuration needed
- **Faster** - Smaller binary, quicker startup
- **Popup-friendly** - Works great in tmux popups
- **Rust** - Aligns with my other Rust tools

I keep lazygit installed as an alternative when I need more advanced features.

## See Also

<div class="embed-card">
  <a href="/git/" class="embed-card-link">
    <div class="embed-card-content">
      <div class="embed-card-title">Git Configuration</div>
      <div class="embed-card-description">Git configuration with aliases, delta for diffs, and work/personal separation</div>
      <div class="embed-card-meta">Feb 7, 2026</div>
    </div>
  </a>
</div>


<div class="embed-card">
  <a href="/lazygit/" class="embed-card-link">
    <div class="embed-card-content">
      <div class="embed-card-title">Lazygit</div>
      <div class="embed-card-description">Lazygit - a simple terminal UI for git commands</div>
      <div class="embed-card-meta">Feb 7, 2026</div>
    </div>
  </a>
</div>


<div class="embed-card">
  <a href="/tmux/" class="embed-card-link">
    <div class="embed-card-content">
      <div class="embed-card-title">tmux Configuration</div>
      <div class="embed-card-description">tmux configuration for persistent terminal sessions with popup windows and session management</div>
      <div class="embed-card-meta">Feb 7, 2026</div>
    </div>
  </a>
</div>


<div class="embed-card embed-card-external">
  <a href="https://github.com/extrawurst/gitui" class="embed-card-link" target="_blank" rel="noopener noreferrer">
    <div class="embed-card-image">
      <img src="https://repository-images.githubusercontent.com/247725846/86707e00-e9f5-11ea-92b0-b7d526afa90f" alt="" loading="lazy">
    </div>
    <div class="embed-card-content">
      <div class="embed-card-title">GitHub - gitui-org/gitui: Blazing 💥 fast terminal-ui for git written in rust 🦀</div>
      <div class="embed-card-description">Blazing 💥 fast terminal-ui for git written in rust 🦀 - gitui-org/gitui</div>
      <div class="embed-card-meta">GitHub &middot; github.com</div>
    </div>
  </a>
</div>

