git-tree is a desktop Git visualizer that turns commit history into an interactive tree.
Explore branches, inspect commits, view diffs, and analyze repository activity in a clean terminal-style UI.
- π³ Interactive commit tree (horizontal & vertical)
- π Commit search (author, message, hash)
- π Full diff viewer with collapsible files
- π§ Minimap navigation
- π Repository statistics (contributors + heatmap)
- π¨ 15 built-in themes
- π±οΈ Mouse + keyboard navigation
- π Open commits in GitHub/GitLab
- π Clone or open local repositories
- β‘ Fast native Rust performance
1. Install system dependencies
sudo apt update
sudo apt install -y \
libgit2-dev \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libglib2.0-dev \
libcairo2-dev \
libpango1.0-dev \
libxdo-dev \
pkg-configsudo pacman -S libgit2 webkit2gtk-4.1 gtk3 base-develFor the best experience, use the official installer:
curl -fsSL https://raw.githubusercontent.com/MahiroJV/git-tree/master/install.sh | bashsudo dnf install libgit2-devel webkit2gtk4.1-devel gtk3-devel2. Download the binary
Grab the latest release from the Releases page:
wget https://github.com/MahiroJV/git-tree/releases/latest/download/git-tree-linux-x86_64
chmod +x git-tree-linux-x86_64
./git-tree-linux-x86_64Or move it to your PATH for system-wide access:
sudo mv git-tree-linux-x86_64 /usr/local/bin/git-tree
git-treeAppImage (no dependencies needed):
chmod +x git-tree-*-x86_64.AppImage
./git-tree-*-x86_64.AppImageIf you have any problems with installation, please check the Wiki.
Requirements:
- Rust 1.75+
- Dioxus CLI
- System dependencies (see above)
# Clone the repo
git clone https://github.com/MahiroJV/git-tree
cd git-tree
# Install Dioxus CLI
cargo install dioxus-cli
# Run in dev mode
dx serve --platform desktop
# Build release binary
dx build --platform desktop --release
# Binary will be at: dist/git-treeOpen a local repo:
- Launch git-tree
- Make sure
[ LOCAL FOLDER ]tab is selected - Type the full path to your repo or use the π picker
- Click
OPEN β
Clone a remote repo:
- Click
[ REMOTE URL ]tab - Paste a GitHub/GitLab URL (e.g.
https://github.com/user/repo) - Click
CLONE β - git-tree clones it to a temp folder and opens it
Search GitHub:
- Click
[ SEARCH ONLINE ]tab - Type any query (e.g.
rust async runtime) - Hit Enter or click
SEARCH β - Click
CLONE βon any result to open it instantly
Navigating the tree:
- Click any commit node β left panel shows commit info, right panel shows diff stats
β β(horizontal) orβ β(vertical) to move between commitsESCto deselectCTRL+scrollto zoom, drag to pan- Click anywhere on the minimap to jump to that region
- Toolbar β
[ VIEW DIFF ]to open the full diff viewer - Toolbar β
[ STATS ]to open the repo stats screen
Settings:
- 15 themes with live preview
- Font size, node spacing, merge commit visibility
- Tree direction (Horizontal / Vertical)
- Branch style (Curved / Geometric)
- CRT scanline overlay
| Name | Description |
|---|---|
| Terminal | Black + purple β default |
| Matrix | Hacker green |
| Amber | Old phosphor monitor |
| Synthwave | 80s retrowave |
| Nord | Cold Nordic blues |
| Dracula | Popular dark dev theme |
| Gruvbox | Warm retro |
| Blood Moon | Dark dramatic red |
| Ice Terminal | Cold blue cyberpunk |
| Light | Paper white, clean |
| Dark | Deeper black than Terminal |
| Tokyo Night | Deep blue city lights |
| Cappuccino Mocha | Catppuccin-inspired warm dark |
| Rose Pine | Muted dawn purple |
| Everforest | Muted forest green |
- Tree visualization
- Click panels (commit info + diff stats)
- 9 themes
- Contributor colors
- Local + remote clone
- Zoom + pan
- App icon
- Search by author / message / hash
- Diff viewer (actual +/- code lines with collapse)
- Keyboard navigation (arrow keys between commits)
- Fix font loading (Space Mono offline)
- Recent repositories list with filter
- Copy hash button
- Vertical tree layout
- Settings panel (font size, node spacing, merge visibility)
- CRT scanline overlay
- 2 extra themes (Light, Dark)
- Minimap (corner overview of the full tree, click-to-navigate)
- Repo stats (contributor leaderboard + commit heatmap)
- Open commit in browser (GitHub / GitLab)
- Node pulse animation on click
- GitHub repository search + one-click clone
- Curved and geometric branch connector styles
- 4 extra themes (Tokyo Night, Cappuccino Mocha, Rose Pine, Everforest)
- Export tree as SVG or PNG
- GitHub OAuth login (private repo access)
- Windows installer (MSI via cargo-wix)
- macOS build
- Linux Flatpak / Snap packaging
- Full keyboard shortcut system
- Performance improvements for very large repos
- Community themes
src/
βββ main.rs # Entry point, window config
βββ app.rs # Root component + global state
βββ theme.rs # 15 themes + contributor color engine
βββ recent.rs # Recent repos persistence (~/.config/git-tree/)
βββ components/
β βββ home_screen.rs # Repo open/clone/search screen + recent list
β βββ toolbar.rs # Top navigation + search bar
β βββ tree_canvas.rs # SVG tree (horizontal + vertical + minimap)
β βββ left_panel.rs # Commit details + copy hash
β βββ right_panel.rs # Diff stats + file list
β βββ diff_viewer.rs # Full diff viewer with per-file collapse
β βββ stats.rs # Repo stats (heatmap + contributor leaderboard)
β βββ settings.rs # Theme selector + display options
βββ git/
βββ loader.rs # Open local / clone remote
βββ parser.rs # Git history β tree data structures
βββ search.rs # GitHub API search
βββ url.rs # Remote URL β browser URL conversion
assets/
βββ css/
β βββ style.css # Core terminal theme + layout
β βββ diff_viewer.css # Diff viewer styles
β βββ left_panel.css # Left panel styles
β βββ right_panel.css # Right panel styles
β βββ panel_shared.css # Shared collapse/expand styles
β βββ stats.css # Stats screen styles
βββ fonts/
βββ Oxanium.ttf
βββ SpaceMono-Regular.woff2
| Dependency | Version |
|---|---|
| Rust | 1.75+ |
| Dioxus | 0.6 |
| git2 | 0.19 |
| libgit2 | system |
| webkit2gtk | 4.1 (Linux) |
MahiroJV β github.com/MahiroJV
Built with Rust + Dioxus π¦
MIT





