git-tree lets you visualize your git history in a clean terminal-style desktop app. Open any local repo or clone a remote one, click any commit node to see author, date, message, and diff stats. Full diff viewer included.
──●──●──●──●──●──●──●──
╲ ╱
●─────●
- Open local git repos or clone remote URLs
- Horizontal and vertical branch tree layouts
- Each contributor gets a unique persistent color
- Click any commit node → author, date, message, hash, diff stats
- Full diff viewer with per-file collapse/expand and hunk lines
- Search commits by author, message, or hash
- Keyboard navigation between commits (← → or ↑ ↓)
- Zoom + pan (CTRL+scroll, drag, or toolbar buttons)
- Recent repositories list with search filter
- Copy commit hash to clipboard
- 11 built-in themes with live preview in settings
- CRT scanline overlay (toggleable)
- Font size control (11–16px)
- Node spacing control (Compact / Normal / Wide)
- Merge commit visibility toggle
- Default theme: Terminal (black + purple, Space Mono font)
1. Install system dependencies
Ubuntu / Debian:
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-configArch Linux:
sudo pacman -S libgit2 webkit2gtk-4.1 gtk3 base-develFedora:
sudo 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
chmod +x git-tree-linux
./git-tree-linuxOr move it to your PATH for system-wide access:
sudo mv git-tree-linux /usr/local/bin/git-tree
git-treeRequirements:
- 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
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- Toolbar →
[ VIEW DIFF ]to open the full diff viewer
Settings:
- 11 themes with live preview
- Font size, node spacing, merge commit visibility
- Tree direction (Horizontal / Vertical)
- 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 |
- 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)
- Repo stats (contributor leaderboard + commit heatmap)
- Export tree as SVG or PNG
- Open commit in browser (GitHub / GitLab)
- Node pulse animation on click
- Blame view (per-file line authorship)
- GitHub OAuth login
- Private repo access
- Windows + macOS builds (CI)
- Linux AppImage packaging
- Android port (Dioxus mobile)
- Full keyboard shortcut system
- Performance improvements (lazy loading for huge repos)
- Community themes
src/
├── main.rs # Entry point, window config
├── app.rs # Root component + global state
├── theme.rs # 11 themes + contributor color engine
├── recent.rs # Recent repos persistence (~/.config/git-tree/)
├── components/
│ ├── home_screen.rs # Repo open/clone screen + recent list
│ ├── toolbar.rs # Top navigation + search bar
│ ├── tree_canvas.rs # SVG tree (horizontal + vertical layouts)
│ ├── left_panel.rs # Commit details + copy hash
│ ├── right_panel.rs # Diff stats + file list
│ ├── diff_viewer.rs # Full diff viewer with per-file collapse
│ └── settings.rs # Theme selector + display options
└── git/
├── loader.rs # Open local / clone remote
└── parser.rs # Git history → tree data structures
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
└── 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