The visual Git GUI that bringsclarity to every branch.
A visual Git client for macOS, Windows and Linux: stage line by line, see every branch in one graph and resolve conflicts side by side. Pro adds pull requests, CI/CD runs and Nour, your AI assistant.
Rewrite history and take it back. Run branches side by side. Follow a push to production. Let a coding agent work with a snapshot behind every turn.
Every Git feature is on the Free plan, with no account needed. Your code stays on your computer.
feat(history):01 / 04
Rewrite Git history, and take it back
Rebase, squash and reset change history for good on the command line. In GitTree each one shows its plan first and leaves a snapshot behind.
Free
Interactive rebase with the plan in front of you
lumen — GitTree
1Set Fixup and Squash in the editor
2Start the rebase
3Open What Changed to compare before and after
Two messy commits folded away, then every old commit matched with its new one.
What this demo shows
A product demo without sound. The interactive rebase editor lists the commits of feature/export. The fixup commit is set to Fixup and the wip commit to Squash, and the editor shows the combined message. Start Rebase rewrites the branch with fewer commits. What Changed opens from the rebase notice and pairs each old commit with its new one: two the same, three dropped and one added.
Reorder commits by dragging, then squash, fix up, reword or drop them. GitTree shows what will be replayed before anything changes. Afterwards, What Changed compares the branch before and after the rewrite, commit by commit, so you can prove a rebase changed nothing it should not have.
Pick, reword, edit, squash, fixup and drop, by mouse or keyboard
Squash a selection, a commit into its parent or a whole branch from one dialog
What Changed pairs old and new commits and marks each the same, changed, added or dropped
Undo a hard reset. Find the commit you thought was gone.
lumen — GitTree
1Reset a branch by mistake, press Undo
2Open Lost & Found and pick a result
3Create recovery branch
A hard reset undone in one click, and a deleted branch brought back from Lost & Found.
What this demo shows
A product demo without sound. main is reset hard to an older commit from the commit menu, and its two newest commits leave the graph. Undo in the toolbar brings them back exactly. The unmerged branch feature/draft is then deleted. Lost & Found opens, finds its last commit among GitTree's recovery references, shows its message and files, and Create recovery branch keeps it as recovered/draft, which appears in the graph.
Before a reset, rebase, squash, discard or branch delete, GitTree saves the previous state as a hidden snapshot, so Undo in the toolbar puts it back. When work is lost another way, Lost & Found searches the reflog and those snapshots for commits no branch points to, shows what is in each, and keeps the one you choose on a new branch.
Undo and redo for commit, amend, checkout, reset, rebase, discard and deleted branches or tags
Lost & Found previews a commit's message and files before you restore it
Recovery creates a new branch; your checkout and other branches stay as they are
The merge dialog warns of the conflict; the three-way editor settles it line by line.
What this demo shows
A product demo without sound. Merging fix/config-defaults into main shows a warning that the merge will stop with a conflict in src/config.ts. The three-way editor shows the current side, the incoming side and the output. The notes folder line is taken from the current side and the theme line from the incoming side, the file is saved and marked resolved, and Continue creates the merge commit.
The merge dialog names both branches and says whether the merge will stop with a conflict, and in which files. A marker beside a branch warns when it would conflict with main. When a conflict does happen, the three-way editor shows your side, the incoming side and the result, and you take whole conflicts or single lines.
Conflict prediction before merge, worked out locally
A hint when other unmerged branches change the same files
Take a side, both, or single lines, then mark the file resolved and continue
Reset, discard, delete and rebase can be reversed from the toolbar.
Snapshots first
Destructive actions save a recoverable copy before they run.
Safer force-push
Force-push uses --force-with-lease, so it never overwrites work you haven’t seen.
Cancel by default
Dangerous dialogs focus Cancel and say exactly what will happen.
feat(worktrees):02 / 04
Git worktrees and stacked pull requests, without the bookkeeping
Several branches in progress, several checkouts, perhaps an agent in each. GitTree keeps track of where each one stands.
Free
Every checkout as a card you can resume
lumen — GitTree
1Open Workspaces › Overview
2Hide an item in the Attention list
3Remove a finished checkout after its preview
Three checkouts as cards, one list of what needs attention, one finished checkout safely removed.
What this demo shows
A product demo without sound. Workspaces Overview shows the three checkouts of the lumen repository as cards: main, feature/export with a new file, and fix/sync, clean and pushed. The Attention tab lists the unfinished changes in feature/export, and the item is hidden for an hour. Back on the cards, the cleanup preview for fix/sync shows no changed files and no unpublished commits; Remove reviewed checkout removes the folder, and the branch fix/sync stays.
Worktree cards show every checkout of your saved repositories with its branch, its changes and where you left off. Resume reopens the file and the Nour chat you had open. Attention is one list of what needs you across all of them: failing pipelines, approvals, waiting Nour chats and unpublished work, read on this computer only.
One card per worktree, grouped by repository, with a status and a next step
Attention: snooze or hide an item until it changes
Worktree cleanup previews what removing a checkout would lose before it removes anything
How it works
Open Workspaces › Overview
Hide an item in the Attention list
Remove a finished checkout after its preview
Alt+Shift+WReview worktree cleanup…
git worktree
Pipeline and approval items in Attention come with GitTree Pro.
Six commits become a stack of three branches, restacked in one rebase and submitted as three merge requests.
What this demo shows
A product demo without sound; typing and waiting are sped up where the picture says so. Six commits on feature/import are selected, and Split into Stack groups them into three branches, import/parser, import/validation and import/ui, without rewriting a commit. The STACKS section shows the ladder. import/parser is checked out from the ladder, a change is staged and its last commit is amended. Restack rebuilds the two branches above it in one rebase. Submit Stack pushes the three branches to a self-managed GitLab server and creates three merge requests, each targeting the branch below it, and the ladder shows their numbers.
A stack is a set of branches that build on each other, each with its own small pull request. GitTree shows the stack as a ladder, splits a long branch into one without rewriting a commit, and restacks every branch above a change in one rebase that a single Undo reverses. Submit Stack pushes each branch and creates or updates its pull request on the branch below.
Split into Stack groups commits into branches without rewriting one; or start a stack from any branch
The ladder shows each branch's own commits, its state and its pull request: draft, approved or changes requested
Restack every branch above a change in one rebase, then submit to GitHub, GitLab, Azure DevOps or Bitbucket
How it works
Select commits, Split into Stack
Amend the bottom branch, Restack
Submit Stack
Alt+KShow Stack
Alt+Shift+YSplit into Stack…
Alt+URestack…
Alt+Shift+CSubmit Stack…
git rebase --update-refs
Stacks work locally on every plan. Submitting a stack to your provider comes with GitTree Pro.
CI/CD in your Git client, from the push to production
See what a push will ship before it leaves, follow the run it starts, and know which commit each environment runs. GitHub Actions, GitLab CI/CD, Azure Pipelines and Bitbucket Pipelines, each under its own name.
Free
See what a push ships before it leaves your computer
lumen — GitTree
1Open Ship Preview from the Push caret
2Review the secret warning and unstage the file
3Push
What the push will send, and a token caught before it is committed.
What this demo shows
A product demo without sound. Two commits wait to be pushed. Ship Preview lists both, the two files they change and the pipeline the push will start. A new commit is attempted with a staged configuration file that holds an obviously fake GitHub token: GitTree warns before committing and names the file and line, with the token masked. Unstage File takes it out, the commit is made without it, and Push sends it to origin.
Ship Preview opens from the Push button and lists the commits, the files and the pipelines this push will start. Before a commit or a push, GitTree also warns about likely passwords, tokens and private keys in what you are about to share. You review, unstage, ignore or continue. The check runs on your computer.
Commits, changed files and the workflows they trigger, in one preview
Secret warnings on commit and on push, switchable in Preferences
Force push always uses --force-with-lease with the expected commit
Follow, re-run and approve pipelines without opening a browser
lumen — GitTree
1Open the failed run and search its job log
2Re-run the failed job
3Start the waiting production job
A failed job found in its log and re-run until it passes, then the waiting production job started.
What this demo shows
A product demo without sound; waiting time is sped up where the picture says so. A commit is pushed to a self-managed GitLab server and GitTree lists the run it starts. The unit-tests job fails; its log from the runner is searched for the AssertionError and shows the failing test. Re-run Failed Jobs runs the job again and it passes, the later stages follow, and the manual deploy-production job waits. Play Job starts it, and the run finishes green.
GitTree lists the runs of your branch, every stage and job, and follows a job’s log while it runs. Search the log, jump from one error to the next, re-run only the failed jobs, start a workflow on the branch you choose, and approve a deployment that waits for you. To test before pushing, Prepare local pipeline builds the act or gitlab-ci-local command for a job and types it into a terminal for you to run.
Live job logs with search and error-to-error navigation
Re-run all or only failed jobs, cancel, dispatch a workflow, approve or reject a deployment
Run GitHub Actions or GitLab CI jobs locally with act or gitlab-ci-local
How it works
Open the failed run and search its job log
Re-run the failed job
Start the waiting production job
Alt+PShow CI/CD
Alt+Shift+LPrepare local pipeline…
CI/CD runs come with GitTree Pro, together with pull requests and the other provider integrations. The depth differs by provider. This demo was recorded against a self-managed GitLab server.
Production runs three commits behind staging; its detail names the last good deployment and what changed since.
What this demo shows
A product demo without sound. The graph header shows two environments read from a self-managed GitLab server: staging up to date on the newest commit, production three commits behind. Clicking production selects its live commit in the graph. Its detail lists the live deployment, the last known good one and the three commits between them, flags that a migration was added, and shows in its history that the newest production deployment failed. The migration commit is then opened in the graph.
The Environments bar in the graph header shows what each environment runs: the commit, how far it is behind your branch, and its state. Click a pill to see the live commit in the graph. When an environment breaks, its detail names the last deployment that worked and lists the commits between it and the one running now, and GitTree can find the commit that built a container image.
A pill per environment with its commit and state, read from your provider
What changed since the last good deployment, as a commit range
Reads Argo CD and Flux to show what the cluster runs
How it works
Click production in the Environments bar
Open its detail: what changed since last good
Open the commit worth a look
Alt+EFocus the Environments Bar
Alt+Shift+EWhat Changed Since Last Good…
Production on the graph reads your hosting provider’s deployments and comes with GitTree Pro.
What was checked, approved and deployed, for every pull request
nebula — GitTree
The Evidence tab of a pull request lays the change out from commit to production: committed, checked, approved, merged, built, running. For each stage GitTree shows what it read from your provider and on which revision, and it lists as open items whatever does not match or could not be read. Save the record when the change is reviewed and at merge, copy it, or export the list.
Which checks ran on which commit, and who approved which revision
Open items name the gaps instead of hiding them
Save Record, the Records tab and Export List keep the history of a repository's changes
Alt+Shift+VShow Change Evidence
Change evidence reads your hosting provider and comes with GitTree Pro.
AI coding agents in your repository, with a snapshot behind every turn
GitTree runs the coding agent you already use and pay for. It stores no AI key and sells no credits. What it adds is the repository: context going in, a snapshot before, a review after.
GitTree Pro
Nour: your coding agent, inside your Git client
lumen — GitTree
1Ask Nour to make a change in Agent mode
2Review the files and commands of the turn
3Undo the turn
Nour explains the working changes with your own coding agent, then drafts the commit message.
What this demo shows
A product demo without sound; waiting time is sped up where the picture says so. Nour is opened beside the commit graph and asked to explain the working changes in plain language. It runs the coding agent that is signed in on the computer, which reads the repository and streams its answer: a result limit on search, a new highlight helper, and three things to know. Back in the working changes, both files are staged and the sparkle button drafts a commit message with the same agent. The summary is edited by hand and the commit is created.
Nour answers questions about your repository in Ask mode and edits files and runs commands in Agent mode, in a repository you trust, with the approvals you set. It saves a snapshot before every turn that may change files, lists the changes and commands of that turn, and can undo the turn after checking for later edits.
Ask and Agent modes, with privileges you control
A snapshot before every turn, and Undo for a turn
Drafts commit messages and pull request descriptions from the real changes
Works with the coding-agent CLI you already use
Claude Code
Codex
Gemini CLI
Antigravity
Qwen Code
OpenCode
Kimi CLI
Cursor Agent
How it works
Ask Nour to make a change in Agent mode
Review the files and commands of the turn
Undo the turn
Nour comes with GitTree Pro and needs one of these CLIs on your computer. What you ask goes to the agent you picked, under its own terms.
A failed pipeline, fixed and proven on the exact commit
nebula — GitTree
From a failed run, Fix with Nour opens a separate checkout at the failed commit, so your own work is untouched. Nour reads the failure evidence, makes a change, and a local check runs. You review the patch and decide whether to publish. GitTree then checks the hosted run for that exact commit, and the steps stay listed until the fix is verified, also after a restart.
A separate fix checkout at the failed revision
Seven visible steps: evidence, checkout, change, local check, publish, hosted run, hand off
Hand the fix off as a pull request
How it works
Fix with Nour on the failed run
Review the patch, publish
Hosted run passes for that commit
Alt+NFix with Nour
Fix with Nour needs GitTree Pro, a connected provider and your own coding-agent CLI. Nothing is pushed without your decision.
Connect Claude Code, Codex or another agent you run in your own terminal or editor to GitTree’s tools for one repository. Each agent gets a profile that decides what it may do. Its pushes, rewrites and pull requests wait for you in GitTree; force push, hard reset and deleting are asked every time; credentials, trust and these settings are never offered. Pause All Agents stops them together.
A profile per connected agent
Held requests reviewed in the app before they run
Pause All Agents with one shortcut
Alt+AAgents Outside Nour
Alt+Shift+QPause All Agents
Agents outside Nour come with GitTree Pro. Each agent runs on your computer, under its own terms.
For Ubuntu and Debian: a .deb package that apt installs for you, or a portable AppImage. It uses your desktop’s own window title bar.
Recommended for Linux
curl -fsSL https://gittree.app/install.sh | bash
Paste it in a terminal: it downloads the latest release, checks it, installs it and opens GitTree. Ubuntu, Debian and other current 64-bit distributions.
Straight answers about GitTree, privacy and platforms.
What is GitTree?
GitTree is a desktop Git client (a Git GUI) for macOS, Windows and Linux. It shows your repository as an interactive commit graph and lets you stage, commit, branch, merge, rebase, stash and push without typing Git commands.
Is GitTree free?
Yes. The Free plan covers every Git feature, private repositories and commercial use included, with no account and no credit card, and you push and pull with your own Git credentials. GitTree Pro, 100% off right now, adds Nour, the AI assistant, the GitHub, GitLab, Bitbucket and Azure DevOps integrations, AI commit-message and pull request drafting, and creating organizations. Pro for teams, billed per seat each month with a minimum of 3 seats, gives every member Pro.
Is it GitTree or Git Tree?
Both: the website writes GitTree and the installed app is called Git Tree. GitTree is a desktop Git GUI app for Mac, Windows and Linux made by Kodmora, a software house. It is not the git tree command or a website that draws repository trees.
Is GitTree open source?
No. The source code of GitTree is private. The installers, release notes and checksums are published in the public GitHub repository, and you can report bugs and request features there.
Do I need an account to use GitTree?
No. Local Git needs no account: when GitTree opens, choose Continue with local Git (no account), and the Free plan covers every Git feature; your repositories stay on your computer, and you push or pull with your own Git credentials. Signing in is optional. Create a GitTree account free on this website with your email address (a one-time code, no password) or with GitHub, GitLab, Bitbucket or Azure DevOps when you want to redeem GitTree Pro, create an organization or join one you are invited to; the hosting integrations, AI drafting, creating organizations and Nour, the AI assistant, come with GitTree Pro, which is 100% off right now.
Which operating systems are supported?
macOS 13 Ventura or later on Apple silicon and Intel Macs (one universal app), 64-bit Windows 10 (22H2) and Windows 11, and 64-bit Linux: Ubuntu 22.04 LTS or later and Debian 12 or later, plus derivatives that ship WebKitGTK 4.1, such as Linux Mint 21+ and Pop!_OS 22.04+ (only Ubuntu and Debian are tested).
Do I need Git installed?
Yes. GitTree uses the Git you already have (version 2.39 or newer), so everything it does matches what the command line would do. If Git is missing, the app explains how to install it.
Does it work with GitHub, GitLab, Bitbucket and Azure DevOps?
Yes. GitTree works with any Git remote over HTTPS or SSH, with your own credentials, on the Free plan. With GitTree Pro, connect GitHub, GitLab, Bitbucket or Azure DevOps accounts (including GitHub Enterprise Server and Bitbucket Data Center) to browse and clone repositories, open and review pull or merge requests and see their CI checks. GitHub and Bitbucket Cloud are the most mature; the others are new.
Does GitTree show CI/CD pipelines for GitHub Actions and GitLab CI?
Yes, with GitTree Pro. GitTree lists the runs of a branch or a commit for GitHub Actions, GitLab CI/CD, Azure Pipelines and Bitbucket Pipelines, shows stages and jobs, and follows job logs while they run. Where the provider allows it, you can re-run or cancel a run, start a workflow and approve a deployment. Preparing a local run with act or gitlab-ci-local is on the Free plan.
What is Nour, the AI assistant in GitTree?
Nour is the AI assistant inside GitTree. It runs the coding-agent CLI on your computer, such as Claude Code, Codex or Gemini CLI, to answer questions about your repository, or to edit files and run commands in a repository you trust. It saves a snapshot before every turn, so you can undo it. GitTree also drafts commit messages and pull request descriptions with the same CLI. It stores no AI key, there are no credits to buy, and Nour and AI drafting come with GitTree Pro.
Can I use Claude Code or Codex with GitTree?
Yes. Nour, the AI assistant in GitTree Pro, runs the coding-agent CLI that is already installed and signed in on your computer: Claude Code, Codex, Gemini CLI, Antigravity, Qwen Code, OpenCode, Kimi CLI, Cursor Agent or a custom agent. GitTree stores no AI key and sells no AI credits; what you ask goes to that agent under its own terms. Nour saves a snapshot before each turn that may change files, so a turn can be undone.
Is GitTree available in Arabic?
Yes. The whole app can be used in English or in Arabic, with a full right-to-left layout; the commit graph, diffs and terminal stay left to right. This website is in Arabic too, one of its ten languages.
Can GitTree undo a git reset --hard or a bad rebase?
Yes. Before a reset, rebase, squash, discard or branch delete, GitTree saves the previous state as a hidden snapshot in your repository, and Undo in the toolbar restores it. If commits were lost another way, Lost & Found searches the reflog and those snapshots for commits no branch points to and puts the one you choose on a new branch. A reset made outside GitTree has no snapshot: its commits can still be found through the reflog, but uncommitted changes that Git never stored cannot be recovered.
Does GitTree support stacked pull requests?
Yes, from version 3.0.2. A stack is a set of branches that build on each other, each with its own small pull request. GitTree shows the stack, splits a branch into one without rewriting commits, and restacks the branches above a change in one rebase. Building stacks locally is on the Free plan; Submit Stack, which creates or updates the pull requests on GitHub, GitLab, Azure DevOps or Bitbucket, comes with GitTree Pro.
Open your first repository in GitTree
Download it for macOS, Windows or Linux and open a repository you already have, with no account needed. The Free plan covers every Git feature.