Keifu
Git genealogy, untangled. A TUI for navigating commit graphs with color and clarity.
Install / Use
/learn @trasta298/KeifuREADME
🧬 keifu
keifu (系譜, /keːɸɯ/) is a terminal UI tool that visualizes Git commit graphs. It shows a colored commit graph, commit details, and a summary of changed files, and lets you perform basic branch operations.

Motivation
- Readable commit graph —
git log --graphis hard to read; keifu renders a cleaner, color-coded graph - Fast branch switching — With the rise of vibe coding, working on multiple branches in parallel has become common. keifu makes branch switching quick and visual
- Keep it simple — Only basic Git operations are supported; this is not a full-featured Git client
- Narrow terminal friendly — Works well in split panes and small windows
- No image protocol required — Works on any terminal with Unicode support
Features
- Unicode commit graph with per-branch colors
- Commit list with branch labels, date, author, short hash, and message (some fields may be hidden on narrow terminals)
- Commit detail panel with full message and changed file stats (+/-)
- File diff view with syntax highlighting and word-level change emphasis
- Git operations: checkout, create/delete branch, fetch
- Branch search with dropdown UI
Requirements
- Run inside a Git repository (auto-discovery from current directory)
- A terminal with Unicode line drawing support and color
gitcommand in PATH (required for fetch)- Rust toolchain (for building from source)
Installation
From crates.io
cargo install keifu
With mise
mise use -g github:trasta298/keifu@latest
With Homebrew
brew install trasta298/tap/keifu
From source
git clone https://github.com/trasta298/keifu && cd keifu && cargo install --path .
Usage
Run inside a Git repository:
keifu
Configuration
See docs/configuration.md for configuration options.
Keybindings
Navigation
| Key | Action |
| --- | --- |
| j / ↓ | Move down |
| k / ↑ | Move up |
| ] / Tab | Jump to next commit that has branch labels |
| [ / Shift+Tab | Jump to previous commit that has branch labels |
| h / ← | Select left branch (same commit) |
| l / → | Select right branch (same commit) |
| Ctrl+d | Page down |
| Ctrl+u | Page up |
| g / Home | Go to top |
| G / End | Go to bottom |
| @ | Jump to HEAD (current branch) |
| Space | Open file diff view |
Git operations
| Key | Action |
| --- | --- |
| Enter | Checkout selected branch/commit |
| b | Create branch at selected commit |
| d | Delete branch (local, non-HEAD) |
| f | Fetch from origin |
Search
| Key | Action |
| --- | --- |
| / | Search branches (incremental fuzzy search) |
| ↑ / Ctrl+k | Select previous result |
| ↓ / Ctrl+j | Select next result |
| Enter | Jump to selected branch |
| Esc / Backspace on empty | Cancel search |
File diff view
| Key | Action |
| --- | --- |
| j / k / ↑ / ↓ | Scroll up/down |
| h / l / ← / → | Scroll left/right |
| Ctrl+d / Ctrl+u | Half-page down/up |
| Ctrl+f / Ctrl+b | Full page down/up |
| g / G | Go to top/bottom |
| 0 | Scroll to line start |
| ] / [ | Jump to next/previous hunk |
| n / N | Jump to next/previous file |
| Esc / q | Back to file select / close |
Other
| Key | Action |
| --- | --- |
| R | Refresh repository data |
| ? | Toggle help |
| q / Esc | Quit |
Notes and limitations
- The TUI loads up to 500 commits across all branches.
- Merge commits are diffed against the first parent; the initial commit is diffed against an empty tree.
- Changed files are capped at 50. Binary files are shown without line stats.
- If there are staged, unstaged, or untracked changes, an "uncommitted changes" row appears at the top.
- When multiple branches point to the same commit, the label is collapsed to a single name with a
+Nsuffix (e.g.,main +2). Useh/lor←/→to switch between them. - Checking out
origin/xxxcreates or updates a local branch. Upstream is set only when creating a new branch. If the local branch exists but points to a different commit, it is force-updated to match the remote. - Remote branches are displayed, but delete operations only work with local branches.
- Fetch requires the
originremote to be configured.
License
MIT
Related Skills
apple-reminders
339.5kManage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
gh-issues
339.5kFetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]
healthcheck
339.5kHost security hardening and risk-tolerance configuration for OpenClaw deployments
himalaya
339.5kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
