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 Microsoft Store (signed and distributed by Microsoft, updated through the Store), or the direct 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 on GitHub has a detached signature, which the in-app updater checks along with its SHA-256 before installing; the Microsoft Store edition is updated by the Store.

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.
  • Squash and fixup: a Squash dialog that shows the result before anything changes (squash selected commits, into the parent, or a whole branch; or Alt-drag a commit onto its neighbour), and fixup commits ready for interactive rebase.
  • 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 and previews exactly what the merge brings in; a merge commit can be compared with either parent; 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.
  • Ship Preview: before a push, the commits and files it sends and their code owners.
  • Productivity: command palette, rebindable shortcuts, searchable branch switcher in the toolbar, built-in terminal, repository tabs and workspaces, Markdown previews in their own tab, custom commands, a native menu bar on macOS and an Alt-revealed in-window menu bar on Windows and Linux, 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 (including GitHub Enterprise Server). Pull requests (review, comment, merge, files as a tree, checks, suggested changes applied as a commit, reviewer autocomplete, editable source and target branches, a Markdown toolbar and preview, GitLab merge request templates), the provider's own verdict on a commit signature beside GitTree's check, issues, and CI/CD runs with jobs, live logs, artifacts, re-run, cancel, approvals and workflow dispatch.
  • Delivery: Ship Preview also shows the pipelines, environments and branch rules a push reaches, and asks before a push to a protected branch or environment; what is live in each environment appears on the graph, with Roll Back and Promote.
  • 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, in several chat tabs; commits it made carry a Nour badge. 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, in a window of its own. It is worked out on the user's computer from local history; nothing is uploaded unless the user exports a report or shares it with their organization, after a preview of exactly what leaves the computer (never source code, diffs or commit messages).
  • 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