Skip to content

MahiroJV/git-tree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

111 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

git-tree logo

git-tree

Terminal-style git branch visualizer β€” built with Rust + Dioxus

Built with Claude
Linux Windows
crates.io size


✨ Overview

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.


Screenshots

Screenshot Gallery


⚑ Features

  • 🌳 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

Installation

Linux (recommended)

1. Install system dependencies

Ubuntu

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-config

Arch Linux

sudo pacman -S libgit2 webkit2gtk-4.1 gtk3 base-devel

πŸš€ Recommended Installation for Arch

For the best experience, use the official installer:

curl -fsSL https://raw.githubusercontent.com/MahiroJV/git-tree/master/install.sh | bash

Fedora

sudo dnf install libgit2-devel webkit2gtk4.1-devel gtk3-devel

2. 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_64

Or move it to your PATH for system-wide access:

sudo mv git-tree-linux-x86_64 /usr/local/bin/git-tree
git-tree

AppImage (no dependencies needed):

chmod +x git-tree-*-x86_64.AppImage
./git-tree-*-x86_64.AppImage

Documentation

If you have any problems with installation, please check the Wiki.


Build from source

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-tree

Usage

Open a local repo:

  1. Launch git-tree
  2. Make sure [ LOCAL FOLDER ] tab is selected
  3. Type the full path to your repo or use the πŸ“ picker
  4. Click OPEN β†’

Clone a remote repo:

  1. Click [ REMOTE URL ] tab
  2. Paste a GitHub/GitLab URL (e.g. https://github.com/user/repo)
  3. Click CLONE β†’
  4. git-tree clones it to a temp folder and opens it

Search GitHub:

  1. Click [ SEARCH ONLINE ] tab
  2. Type any query (e.g. rust async runtime)
  3. Hit Enter or click SEARCH β†’
  4. 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 commits
  • ESC to deselect
  • CTRL+scroll to 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

Themes

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

πŸš€ Roadmap


🧱 v0.1 β€” Foundation βœ…

  • Tree visualization
  • Click panels (commit info + diff stats)
  • 9 themes
  • Contributor colors
  • Local + remote clone
  • Zoom + pan
  • App icon

πŸ§ͺ v0.2 β€” Usability βœ…

  • 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)

🎨 v0.3 β€” Polish βœ…

  • 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

πŸ–₯️ v0.4 β€” Platform

  • GitHub OAuth login (private repo access)
  • Windows installer (MSI via cargo-wix)
  • macOS build
  • Linux Flatpak / Snap packaging

🏁 v1.0 β€” Release

  • Full keyboard shortcut system
  • Performance improvements for very large repos
  • Community themes

Project Structure

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

Requirements

Dependency Version
Rust 1.75+
Dioxus 0.6
git2 0.19
libgit2 system
webkit2gtk 4.1 (Linux)

Author

MahiroJV β€” github.com/MahiroJV

Built with Rust + Dioxus πŸ¦€


License

MIT