Skip to content

guis: add GitTree - #2239

Open
eslamfaisal wants to merge 1 commit into
git:gh-pagesfrom
eslamfaisal:add-gittree-gui
Open

eslamfaisal wants to merge 1 commit into
git:gh-pagesfrom
eslamfaisal:add-gittree-gui

Conversation

@eslamfaisal

@eslamfaisal eslamfaisal commented Oct 23, 2026 •

Copy link
Copy Markdown

Changes

  • Add GitTree to the GUI clients list: data/guis/gittree.yml (Mac, Windows, Linux; order: 61), following README → Adding a new GUI.
  • Add its screenshot: static/images/guis/gittree@2x.png (588x332) and static/images/guis/gittree.png (294x166), cut from a real screenshot of the app's commit graph, with no mock-up or text overlay.
Screenshot 2026-10-23 at 3 35 31 PM

Context

GitTree is a desktop Git client for macOS, Windows and Linux. It runs every operation through the Git already installed on the computer (2.39 or newer), so what it does is what the command line would do, and repositories never leave the user's machine.

How it is built

  • Rust core, native shell. Written in Rust (edition 2024) on Tauri 2, with a React 19 + TypeScript interface rendered in the operating system's own webview (WKWebView on macOS, WebView2 on Windows, WebKitGTK on Linux). There is no bundled Chromium, so the installers stay small.
  • Git through the real git CLI. A typed Rust wrapper drives the user's installed git. A small Rust sidecar answers Git's askpass, credential, sequence-editor and editor prompts, so interactive rebase and HTTPS/SSH authentication work the same way as in a terminal.
  • Layered architecture. A Cargo workspace splits the code into domain, application, infrastructure and contracts crates, with dependencies pointing inward only (enforced in CI). The Rust side decides what is allowed and the interface renders it, over a generated, typed IPC contract.
  • Platform integration. Tokens and passphrases live only in the OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service). The built-in terminal uses a real PTY with the user's own shell. A debounced file watcher keeps the graph and working tree current.

Performance

  • Commit graph: lanes are laid out in Rust and drawn on a canvas. History is read in bounded pages of 2,000 rows as the user scrolls, so a large repository opens without reading its whole history first.
  • Measured budget: an automated test against the production build flings through a 10,000-row history at trackpad speed and requires at least 55 fps, no frame over 32 ms and under 4 ms per canvas draw. The graph is designed to stay smooth past 100,000 commits.
  • Diffs and lists: long diffs render only the visible hunks, file and reference lists are virtualised, and status reads are shared between views.

Platforms

Platform Requirements Package
macOS macOS 13 or later, Apple silicon and Intel One universal .dmg, signed with a Developer ID and notarized by Apple
Windows Windows 10 (22H2) and Windows 11, 64-bit x64 installer (.exe)
Linux Ubuntu 22.04+, Debian 12+ and derivatives, x86_64 .deb package, plus a portable AppImage for other distributions (glibc 2.35+)

The same app and feature set ship on all three platforms, in English and Arabic (with a full right-to-left layout). Every installer has a detached signature, which the in-app updater checks along with its SHA-256 before installing.

Features in the free plan

  • Commit graph: colour-coded branch lanes, branch and tag labels, search and filter, a work-in-progress row, and drag a branch onto another to merge or rebase it.
  • Staging and commits: stage or discard whole files, hunks or single lines; amend, co-authors, commit templates, GPG and SSH commit signing, .gitignore editor.
  • Diff, blame and history: split and inline diffs with syntax highlighting, image diffs, blame, file history across renames, and comparison of any two branches, tags or commits.
  • Branches and tags: create, rename, delete, upstream tracking with ahead/behind counts, Git Flow.
  • Merge, rebase and conflicts: the merge dialog warns before a merge would conflict; a three-way conflict editor resolves line by line; cherry-pick, revert, and soft/mixed/hard reset.
  • History editing and recovery: interactive rebase (reorder, reword, edit, squash, fixup, drop), reflog, bisect, and toolbar Undo/Redo backed by snapshots taken before destructive operations.
  • More Git: stash, worktrees, submodules, Git LFS (tracking and locks), patches, shallow, sparse and blobless clones, bare repositories.
  • Remotes: fetch, pull (fast-forward only, merge or rebase), push, multiple remotes over HTTPS or SSH; force-push always uses --force-with-lease.
  • Productivity: command palette, rebindable shortcuts, built-in terminal, repository tabs and workspaces, custom commands, dark, light and high-contrast themes.
  • Safety: an untrusted repository cannot run hooks or apply risky config until the user trusts it, and the app never edits Git config, a repository or ~/.ssh without an explicit action.

Pro features

  • Hosting integrations: GitHub, GitLab, Bitbucket and Azure DevOps, cloud and self-hosted. Pull requests (review, comment, merge, files as a tree, checks), issues, and CI/CD runs with jobs, live logs, re-run, cancel, approvals and workflow dispatch.
  • Nour, the AI assistant: answers questions about a repository or, in agent mode, edits files in a trusted repository with a snapshot before every turn. It runs the coding-agent CLI the user already has (such as Claude Code, Codex or Gemini CLI); GitTree stores no AI key and sells no AI credits.
  • AI drafting of commit messages and pull request descriptions, with the same CLI.
  • Repo Insights: commits, lines and files changed over time, a weekly chart and contributors. It is worked out on the user's computer from local history, and nothing is uploaded.
  • Organizations: invite members, manage roles and seats.

Plans

  • Free: every local Git feature above, for private repositories and commercial use, on all three platforms.
  • Pro (individuals) and Pro for organizations (per seat): everything in Free plus the Pro features, with a free trial that starts only when the user chooses it. Nothing renews automatically.

Official builds require signing in to a GitTree account (email or a Git provider). The app sends no usage telemetry; for the plan check it sends only the OS and version, architecture, app version and a hashed device ID.

Project activity

Checks

  • data/guis/*.yml parses, and no two entries share an order value.
  • The CI build job passes on this branch.

@eslamfaisal

Copy link
Copy Markdown
Author

Could a maintainer please add the proposed-new-gui label to this pull request, so it is grouped with the other GUI submissions? Thank you.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants