GitTree Docs
GitTree desktop manual
The desktop app, section by section. Each guide is one task: what you need first, where the control lives, numbered steps with the real interface, the result and how to recover.
Getting started
8 guidesYour first hour with GitTree: what each part of the window does, a first commit from start to finish, and what is free.
Use GitTree for your daily work
GitTree is a desktop Git client for macOS, Windows and Linux. Sign in, and every local Git task is on the Free plan: open, clone, commit, branch, merge, rebase, stash and undo. GitTree Pro adds hosting integrations, CI/CD runs, AI drafting and Nour, the AI assistant.
FreeInstall GitTree on macOS
GitTree for Mac is one universal app for Apple silicon and Intel Macs on macOS 13 or later, signed and notarized by Apple. Install Git first, open the .dmg, drag GitTree to Applications and start it.
FreeInstall GitTree on Windows
GitTree for Windows is a 64-bit installer for Windows 10 (22H2) and Windows 11. Install Git for Windows first, run the setup, and start GitTree from the Start menu.
FreeInstall GitTree on Linux
GitTree for Linux comes as a .deb for Ubuntu 22.04 or later and Debian 12 or later, and as a portable AppImage, both for 64-bit x86_64. Install Git 2.39 or newer first, then install the .deb with apt or run the AppImage.
FreeFind Git and set your commit identity
GitTree runs the Git installed on your computer and never bundles one. It needs Git 2.39 or newer, and a name and email for your commits (
Freeuser.nameanduser.email), which it asks for the first time a commit needs them.Find your way around GitTree
A repository tab has six parts: the tab bar, the toolbar, the sidebar, the commit graph, the inspector and the status bar. This page shows where each one is and what you do there.
FreeCreate your first commit
A commit saves a snapshot of the changes you staged, with a message that says why. In GitTree you stage a file in the changes panel, type a summary and press Commit: the new commit appears at the top of the graph.
FreeUse local Git for free and understand Pro
Every local Git feature in GitTree is free for everyone who signs in with a GitTree account. GitTree Pro adds Nour, the hosting integrations and AI drafting; you can try them with a free trial that starts only when you ask for it.
Free
Repositories
8 guidesBring a repository into GitTree: open one that is already on your disk, clone one from a server, or start a new one.
Open an existing repository
Choose the folder of a Git repository that is already on your computer and GitTree opens it in its own tab, with its commit graph, branches and changes. Nothing is uploaded: the repository stays on your computer.
FreeClone a repository
Cloning copies a repository from GitHub, GitLab, Bitbucket, Azure DevOps or any Git server to your computer, with its history. In GitTree you paste the URL, choose where it goes and press Clone; it opens in a new tab when it is done.
FreeCreate a repository
Initializing turns a folder into a Git repository, the same as
Freegit init. In GitTree you choose the folder and the initial branch, optionally add a.gitignoreand a licence, and press Initialize.Use recent and favourite repositories
The new tab lists the repositories you opened under Recent and the ones you starred under Favourites. Select one to open it in a tab. The lists stay on this computer.
FreeFind repositories on disk
Scan for Repositories… looks through a folder you choose and lists every Git repository up to three folders deep. Nothing is opened until you choose; you can open one or add them to a workspace.
FreeReview repository trust
Some repositories contain Git settings or hooks that run programs on your computer when Git works in them. Before that can happen, GitTree shows Trust this repository? with exactly what it found, and lets you trust it or open it in Restricted mode.
FreeOpen a bare repository
A bare repository has history but no working files, like the ones servers keep for others to push to (
Freegit init --bare,git clone --bare). GitTree opens it to show the graph, branches and tags, marks its tab bare, and turns off actions that need working files.Manage repository tabs
Each repository opens in its own tab across the top of the window. Tabs show the repository’s state, such as uncommitted changes or a rebase in progress, and you switch between them from the keyboard.
Free
Commit graph
7 guidesThe graph is your repository’s history at a glance. Learn to read its lanes and labels, find any commit, and look inside it.
Read the commit graph
The commit graph shows the repository’s history as rows, newest first, with lanes that split where branches start and join where they merge. Labels on the rows show branches and tags; a check mark shows the branch you are on.
FreeFind a commit
Press Ctrl+F (⌘F on a Mac) in the graph and type part of a commit message, an author, a SHA, a branch or a tag. GitTree highlights the matches and moves between them; Filter Graph narrows the history itself.
FreeInspect a commit
Select a commit in the graph and the inspector on the right shows everything about it: the message, the full SHA, its parents, who wrote and committed it, and the files it changed. Select a file to see its diff.
FreeFocus and filter the graph
In a busy repository, Focus on Current Branch shows just your branch, its upstream and its base, with how many commits it has since the base. Filter Graph… keeps the commits of an author, a date range or a path. Filtering never deletes history; Clear Graph Filter brings every row back.
FreeCustomize graph columns
The graph shows the branch labels, the lanes and the message by default. The Graph columns menu adds Author, Date and SHA columns and switches to compact rows; you can resize every column and hide the side panels.
FreeCompare commits and act on a selection
Select two commits with Ctrl (⌘ on a Mac) held down and choose Compare These Two Commits to see every file that differs. A selection of several commits has its own actions: copy the SHAs, cherry-pick, revert, squash or create a patch.
FreeUse graph drag and drop
Drag a branch label onto another branch in the graph and GitTree offers what the two can do: Fast-forward, Merge or Rebase. Nothing happens until you choose; the usual confirmation and Undo apply.
Free
Changes and commits
10 guidesFrom an edited file to a commit: review what changed, choose exactly what goes in, write the message, and fix the last commit when you need to.
Review working changes
The Working Changes panel is GitTree’s
Freegit status: it lists every file you changed since the last commit, split into Unstaged Files and Staged Files, and shows the diff of the file you select.Stage files, hunks and selected lines
A commit contains only what you stage. In GitTree you stage a whole file, one hunk of it, or just the lines you pick in the diff, and the rest of your edits stay in the working folder for a later commit.
FreeWrite a commit message and commit
The commit form sits under your staged files: a Summary line, an optional Description, and Commit Options for co-authors, sign-off, hooks and pushing afterwards. GitTree points out common message mistakes before you commit.
FreeAmend the last commit
Amending replaces the last commit with a new one that has your corrected message and any changes you stage now, like
Freegit commit --amend. In GitTree it is the Amend Previous Commit switch in the commit form.Discard changes and clean untracked files
Discarding puts files back to their last committed or staged state, like
Freegit restore; cleaning removes files Git does not track, likegit clean. GitTree saves a recovery snapshot first, so Undo can bring them back.Choose and use a diff view
Every diff in GitTree can be shown as Hunk, Inline or Split (side by side). Highlight the changed words, wrap long lines, ignore whitespace changes, preview Markdown, and jump from one change to the next.
FreeIgnore files from GitTree
Files you never want to commit, such as build output or local settings, belong in
Free.gitignore. Right-click a new file in your working changes and choose what to ignore, or edit.gitignoredirectly with Edit .gitignore….Create and apply patches
A patch is a file that carries changes from one repository to another. GitTree saves a file’s changes or one or more commits as a patch, and applies a patch to your working tree, staged, or as commits on the current branch.
FreeReview images and binary changes
Text diffs cannot show an image. When a PNG, JPEG, GIF, WebP or other image changes, GitTree compares the before and after pictures: Side by side, Swipe or Onion skin. Other binary files show their sizes.
FreeManage tracked-file index flags
Sometimes you change a tracked file only on your computer, such as a local config. Two Git flags hide such changes: Skip Worktree… keeps your copy and stops showing its changes; Assume Unchanged… is a speed-up that stops Git checking the file. Neither is a way to ignore a file.
Free
Branches and tags
7 guidesBranches let you work on several things at once; tags mark releases. This section covers both, local and remote.
Create and switch branches
A branch is a movable name for a line of work. In GitTree, Branch in the toolbar creates one at the commit you are on; right-click any commit to create one there. Double-click a branch label to switch to it.
FreeRename and delete branches
Right-click a branch label for Rename and Delete. Deleting a local branch saves its last commit under
Freerefs/ogt/trashfirst, so Undo brings it back; deleting on the remote is a separate, clearly named choice.Create and manage tags
A tag is a fixed name for one commit, usually a release such as
Freev2.2.0. Right-click a commit, choose Tag Here, then a lightweight or an annotated tag. Tags are not pushed with your commits: push each one with Push Tag.Set tracking and publish a branch
A new branch exists only on your computer until you push it. The first Push asks which remote to send it to, and from then on the branch tracks that remote branch (its upstream), like
Freegit push -u. Set Upstream… changes what it tracks.Compare branches and tags
Compare References… compares any two branches, tags, remote branches or commits by name. It shows how many commits one is ahead of and behind the other, and the files that differ: either every difference (
Freegit diff A B) or only what the new side changed since they split (A...B, what a pull request shows).Use Gitflow actions
Gitflow is a branching model with a production branch, a development branch, and feature, release and hotfix branches. GitTree’s Gitflow section initialises it and starts and finishes those branches, merging, tagging and deleting them for you.
FreeRecognize and leave detached HEAD
Checking out a commit or a tag instead of a branch puts you on a detached HEAD: you are not on any branch. You can look around and even commit, but new commits belong to no branch. Create a branch to keep them, or check out a branch to go back.
Free
Remotes and sync
6 guidesShare your work and pick up your team’s: fetch, pull and push, and what the ahead and behind numbers mean.
Fetch, pull and push
Fetch downloads what is new on your remotes without changing your work. Pull brings your branch’s upstream into it. Push sends your commits to the remote. All three are in the toolbar, with their options in the arrow menus beside them.
FreeAdd and edit remotes
A remote is a named copy of the repository elsewhere, such as
Freeoriginon GitHub. The Remote section of the left panel lists them; Add Remote… adds one, and right-clicking a remote edits, fetches, prunes or removes it.Choose remote credentials
GitTree runs your own Git, so fetch, pull and push sign in the way Git does on your computer: over HTTPS through your credential helper, over SSH with your key or SSH agent. Passwords and tokens stay in your system keychain, never in GitTree’s files.
FreeConfigure automatic fetching
Auto-fetch keeps the remote branches in your graph current without you pressing Fetch All. Set the Auto-fetch interval in minutes for every open repository, override it for one repository, and get a desktop notification when new commits arrive.
FreeUse a force push with lease
After you amend, rebase or reset commits you already pushed, a normal push is refused. Force Push (With Lease)… replaces the remote branch with yours, but only if it is still where you last fetched it, like
Freegit push --force-with-lease. GitTree never force-pushes any other way.Work with limited repository history
A shallow clone downloads only the latest commits; a blobless clone downloads file contents only when needed. Both make huge repositories quick to clone. In a shallow clone the graph shows where history stops, and Fetch More History or Fetch Full History bring the rest.
Free
Merge and resolve
6 guidesBring branches together: merge or rebase, settle conflicts line by line, and move single commits where you need them.
Merge branches
Merging brings the commits of another branch into the branch you are on, like
Freegit merge. Right-click the other branch and choose Merge … into …: GitTree checks for conflicts first and lets you choose how the merge is recorded.Rebase a branch
Rebasing replays the commits of your branch on top of another branch, so the history stays a straight line, like
Freegit rebase. The commits get new ids; GitTree keeps the old branch underrefs/ogt/trashand Undo brings it back.Resolve merge conflicts
A conflict happens when both branches changed the same lines. GitTree’s resolver shows the two versions side by side, A and B: tick the lines to keep in each conflict, check the Output, then Save and continue the merge, rebase or cherry-pick.
FreeCherry-pick and revert commits
Cherry-Pick Commit copies the changes of one commit onto your current branch as a new commit, like
Freegit cherry-pick. Revert Commit adds a new commit that undoes one, likegit revert: the safe way to take back something already pushed.Continue, skip or abort an operation
A merge, rebase, cherry-pick or revert can stop halfway, usually on a conflict. A banner above the graph names the operation and its step, and offers Resolve, Continue, Skip (rebase) and Abort…. Aborting saves what it drops first, so Undo brings it back.
FreeReuse recorded conflict resolutions
With Reuse recorded resolutions (rerere) on, Git remembers how you resolved a conflict and writes the same resolution when that conflict comes back, during a repeated rebase for example. GitTree tells you when it happened and lets you review it before marking the file resolved.
Free
History and recovery
10 guidesChange history you have not shared yet, step back when something went wrong, and find out where a line came from.
Edit history with an interactive rebase
An interactive rebase rewrites the commits above a chosen one: keep, reword, edit, squash, fix up or drop each, and drag them into a new order, like
Freegit rebase -i. For a single change, Edit History in a commit’s menu does it in one step.Squash commits
Squashing combines several commits into one, like a
Freefixuporsquashingit rebase -i. In GitTree every squash opens the Squash dialog first: it shows the commits that fold, the result, the message and who gets credit, and nothing changes until you confirm. Your uncommitted work is never touched, and Undo puts the commits back.Change selected local commits
For one quick change to history, you do not need the whole interactive rebase editor. A commit’s Edit History menu edits its message, drops it, or moves it up or down; selecting several commits opens the Squash dialog. GitTree rewrites the commits above it and keeps the old branch, so Undo puts it back.
FreeReset a branch to a commit
Resetting moves your current branch to another commit, like
Freegit reset. Soft keeps every change staged, Mixed keeps them in your working folder, Hard discards them. GitTree saves everything underrefs/ogt/trashfirst, so even a hard reset can be undone.Undo and redo
GitTree records your Git operations so Undo in the toolbar can take the last one back: a commit, merge, rebase, reset, discard, clean, deleted branch or tag. Redo does it again. Destructive steps save a recovery snapshot under
Freerefs/ogt/trashbefore they run.Find previous branch tips
The reflog records where a branch or HEAD pointed, every time it moved: commits, checkouts, resets, rebases. View Reflog… lists those entries; choose one to show its commit in the graph or Restore as Branch.
FreeFile history and blame
History lists every commit that changed a file, following renames, like
Freegit log --follow. Blame shows, for each line, the commit and author that last changed it, likegit blame. Both are views of the file workspace.Use the bisect workflow
Bisect finds the first commit that introduced a problem by halving the history between a commit that has it and one that does not, like
Freegit bisect. Select the two commits, test the commit GitTree checks out, mark it Good or Bad, and repeat until it names the First bad commit.Export an archive
Export Archive… writes the files of a commit, branch or tag as a .zip or .tar.gz, without the
Free.gitfolder, likegit archive. It is the quickest way to hand someone a release’s source.Use repository maintenance and author tools
Repository Maintenance… shows the size of the object database and runs tasks that check it or make history and status faster. Merge Author Identities… writes
Free.mailmaplines so one person with several names or e-mails shows as one author.
Stashes and worktrees
6 guidesSwitch tasks without losing work: stash changes for later, or open another branch in its own folder with a worktree.
Organize workspaces
A workspace is a named set of repositories that opens as a unit, such as “Client A” or “Mobile”. Its dashboard shows every repository’s branch, sync state and changes, plus the pull requests and CI/CD runs across them.
FreeManage saved repositories
Each workspace keeps a list of Saved repositories: every repository you open, clone, create or add from a scan while it is the current workspace is saved there and stays after its tab closes. Open them from the list, all at once, or remove one; its folder is never touched.
FreeStash changes
A stash puts your uncommitted changes aside and gives you a clean working folder, like
Freegit stash, so you can switch tasks and bring the changes back later. Stash in the toolbar saves everything; the changes panel’s Stash tab chooses exactly what.Work on several branches with worktrees
A worktree is a second working folder for the same repository, with its own checked-out branch, like
Freegit worktree add. Review a pull request, run a long build or let a coding agent work in one, without stashing anything in the other.Manage submodules
A submodule is another repository pinned inside yours at a specific commit. GitTree lists them with their state (not initialised, up to date, different commit, conflicted) and adds, initialises, updates, opens, edits and removes them.
FreeUse Git LFS controls
Git LFS stores large files, such as images, videos or models, outside the repository and keeps small pointer files in their place. Git LFS… sets it up, tracks patterns, downloads content, locks files and prunes old content.
Free
Files and tools
10 guidesThe tools around Git: the project’s files, a terminal in the repository folder, the command palette and the shortcuts.
Browse and edit project files
The Files section of the left panel shows your project’s folders, marking the ones that hold changes. Open a file to read or edit it in a tab beside the Graph tab, and switch it between File, Changes, Blame and History.
FreeOpen and edit files
A file you open in GitTree gets its own tab beside the pinned Graph tab. A file from a commit is read-only; Edit in Working Directory opens the copy in your project to edit and Save. If the file changes on disk meanwhile, GitTree saves nothing and lets you choose.
FreeReturn to the commit graph
Diffs, files, blame, history, comparisons, pipelines and pull requests open over the graph. Esc closes the top one and returns to the view that opened it; Back to Graph takes them all off at once. Open files only hide: their tabs stay beside the Graph tab.
FreeUse the built-in terminal
Terminal in the toolbar opens a shell at the repository’s root in the drawer under the graph. Run any command there, Git included: the graph and your changes update as you go. Each repository tab keeps its own terminals.
FreeConfigure external tools
Preferences › External Tools chooses the Editor, Diff tool and Merge tool GitTree opens from file menus and the conflict view. Automatic uses the first installed of Visual Studio Code, Cursor and Antigravity; Custom… runs any program with the arguments you give.
FreeCreate and run custom actions
Custom commands run your own programs on a repository from the Custom actions button and from commit, branch and file menus. Each argument is passed exactly as written, no shell is involved, and the first run of a command shows exactly what will run before it does.
FreeFind actions with the command palette
The command palette runs any GitTree command by typing part of its name, and also jumps to branches, commits, files and open repositories. Press Ctrl+Shift+P (⌘⇧P on a Mac), type, and press Enter.
FreeKeyboard shortcuts
Most GitTree commands have a shortcut. Press Ctrl+/ (⌘/ on a Mac) for the full list inside the app, filtered as you type; Customize… there changes any of them. The tables below list the defaults.
FreeInspect activity and notifications
The Activity Log lists every git command GitTree runs, with its output, how long it took and whether it failed; tokens, passwords and credentials in URLs are removed. Notifications keeps the messages shown in this session, and Preferences › Notifications decides which pop up and whether your system shows them too.
FreeUse the in-app Feature Guide
The Feature Guide lists everything GitTree can do, where to find it and its shortcuts, grouped by area, with a search box. Show me takes you to the feature in the repository you have open; features that need a repository, Pro or a connected account say so.
Free
Hosting integrations
15 guidesYour Git host inside GitTree: pull requests, reviews and checks on GitHub, GitLab, Bitbucket and Azure DevOps.
Connect GitHub
Connecting GitHub lets GitTree list your repositories, pull requests, issues and checks. Sign in with your browser (recommended: you approve GitTree on GitHub’s own page) or use a personal access token. The token is kept only in your system’s keychain.
ProConnect GitLab
GitTree connects to gitlab.com or to a self-managed GitLab host you name. Sign in with the browser through an OAuth application (for gitlab.com GitTree’s own is used), or use a personal access token from that host. The token is used for that host only.
ProConnect Bitbucket Cloud
GitTree connects to Bitbucket Cloud (bitbucket.org) three ways: sign in with your Bitbucket account in the browser, use an Atlassian API token with the account’s email, or use a workspace, project or repository access token. Tokens are kept only in your system’s keychain.
ProConnect Bitbucket Data Center
For a company Bitbucket Data Center server, name its host, then use a personal HTTP access token from it, or sign in with the browser through the incoming OAuth application link your administrator created for GitTree. GitTree talks to that host only.
ProConnect Azure DevOps
Sign in with your Microsoft account in the browser, or use a personal access token from Azure DevOps. GitTree talks to dev.azure.com and to Microsoft’s profile service to find your organisations, then lists their repositories, pull requests and pipelines.
ProConnect enterprise and self-hosted servers
GitTree connects to your company’s own servers: GitHub Enterprise Server, self-managed GitLab and Bitbucket Data Center. You name the host; GitTree talks to
Prohttps://that host only, and the token is used for that host only. Browser sign-in needs an OAuth application your administrator registered there.Check integration availability
Providers do not all offer the same things. The Integrations tab of the Feature Guide shows, for the open repository’s provider and your account, what is Available, what is Not offered by that provider, and what is Coming soon.
ProBrowse and create provider repositories
With an account connected, Clone a repository lists that account’s repositories by Owner, with search, so you do not need to copy a URL. Publish Repository… goes the other way: it creates the repository on your account, adds it as a remote and pushes your branch.
ProUse forks from GitTree
A fork is your own copy of a repository on the provider. Create Fork… asks the provider to make one; Add Remote from Fork… adds an existing fork as a remote. Creating a fork changes nothing in your repository until you add it, and an existing remote is never replaced.
ProPull requests
With a hosting account connected, GitTree lists the repository’s pull requests in the left panel and opens each one beside the graph: its conversation, commits, files and checks, with Review… and Merge…. Pull requests are part of GitTree Pro.
ProCreate a pull or merge request
Right-click your branch and choose Start a Pull Request…. Pick what it merges From and Into, write the Title and Description, add reviewers, optionally Open as a draft, and press Create Pull Request. A branch that is not on the remote yet is pushed first.
ProReview and discuss changes
Open the pull request, read Files, and press + beside a line to add a line comment to your review. Review… sends your decision (Approve, Request changes or Comment) with a Summary and every line comment. Conversations can be replied to and resolved where the provider supports it.
ProMerge or close a pull request
Merge… asks the provider how the pull request may be merged, shows whether it is Ready to merge, and offers only the Merge methods the repository allows. GitTree merges only while the head is still the commit you looked at; if new commits arrived, nothing is merged.
ProUse supported issue actions
The Issues section of the left panel lists the repository’s open issues. Open one to read and comment, create one with New Issue…, or start work with Create Branch from Issue…. Closing and editing issues happen on the provider’s page: Open Issue in Browser.
ProInspect checks and commit status
GitTree shows the CI state of commits and pull requests: Checks passing, Checks failing, Checks running, Checks skipped or No checks reported, with how many passed, failed, ran or were skipped. Select it to see the runs, open a check’s log, or Re-run Check.
Pro
CI/CD
11 guidesYour pipelines next to your commits: what ran, what failed and why, without leaving the app.
CI/CD runs
GitTree shows the CI/CD runs of your repository’s host, such as GitHub Actions, in the left panel and in a full list beside the graph: what passed, what failed and why, with Re-run Failed Jobs, Cancel Run… and Run Workflow…. CI/CD is part of GitTree Pro.
ProBrowse and filter runs
The CI/CD list shows every run of the repository and updates by itself while runs are going. Filters narrow it by Branch, Workflow, Status and Trigger; Mine keeps your runs; Watch keeps a run updating in the background and tells you when it finishes.
ProRead jobs and logs
Open a run and select a job or step to read its log in the Log tab. Jump to first error goes straight to the failure, Search the log… finds text, Timestamps and Wrap change the view, Following keeps a running job’s live output in view, and Save Log… writes it to a file.
ProRerun or cancel a pipeline
From a run, Re-run Failed Jobs repeats only what failed, Re-run All Jobs repeats everything, and a job’s menu re-runs just that job (Retry Stage on GitLab-style stages). Cancel Run… stops it; Force Cancel Run… ends it without letting jobs clean up. Neither cancel can be undone.
ProRun a workflow
Run Workflow… starts a workflow that can be run by hand, such as a GitHub Actions workflow with a
Proworkflow_dispatchtrigger or a Bitbucketcustompipeline. GitTree reads its inputs from the workflow file at the branch you choose and shows a field for each.Download available artifacts
The Artifacts tab of a run lists the files it produced, with Name, Size and when it Expires. Save… asks where to save it and downloads it there, as the provider stores it; a zip is saved as a zip and GitTree does not open it.
ProInspect deployments and environments
A run that deploys shows Deploys to … and an Environments tab: each environment, its deployment, branch or commit and when. A deployment that waits shows Waiting for approval; if you are one of its reviewers, Approve Deployment… and Reject Deployment… act on it. These change things for everyone and cannot be undone.
ProCreate and check pipeline files
New CI/CD File… writes a starter file where your provider reads it, such as
Pro.github/workflows/or.gitlab-ci.yml; it never writes over an existing file. Edit it in GitTree, press Check with … to have the provider validate it, then commit it like any file.Manage pipeline settings
CI/CD Settings shows what the provider lets another app manage: Variables, Secrets, Environments, Runners, Schedules, Caches, Definitions and Releases. A secret’s value is typed in a secure system prompt or read from a file you choose, and goes straight to the provider; GitTree never shows, keeps or sends it anywhere else.
ProUse pipeline release controls
CI/CD Settings › Releases lists the repository’s releases. New Release names a tag (or creates one from a branch or commit), with a Title, Notes (Markdown) and files people can download. A release is published for everyone who can see the repository unless you Save as a draft.
ProAsk Nour about a pipeline failure
Explain Failure opens Nour with a question about a failed run. Nour reads the failing step’s log (at most 64 KiB) only if you approve, every time, and answers with what it thinks went wrong and what to try. Treat the answer as advice: check it against the log.
Pro
Nour assistant
7 guidesNour answers questions about your repository and can act in the app, always within the privileges you set and with your approval.
Set up Nour, the AI assistant
Nour is GitTree’s AI assistant. It runs the coding-agent CLI you already use, such as Claude Code, Codex or Gemini CLI, with your own subscription: GitTree never sees your keys. In Ask mode Nour only looks and answers; in Agent mode it can act within what you allow. Nour is part of GitTree Pro.
ProAsk Nour about your work
Nour always knows the repository and checked-out branch of the chat. Type
Pro@to mention a file, folder, branch, commit or pull request, attach a file, or tell Nour about other branches. The chips above the message box show What Nour is told; the scope picker decides which repositories the chat covers.Review Nour app actions
In Agent mode Nour can act in GitTree through its own commands: open views, stage, commit, fetch, push, and more. Each action belongs to a kind (Look around, Change you can undo, Risky) and follows your choice for it; anything risky always waits for your click on an approval card.
ProDraft a commit or pull request
The commit box and the pull request dialog can draft their text with a coding-agent CLI you have installed: Generate commit message with … reads your staged changes, and Draft the title and description with … reads your branch’s commits. You review and edit the draft; nothing is committed or opened until you press the button.
ProManage Nour sessions
Every chat is kept per repository in Chat history. Stop ends the current reply; Nour also stops an agent that prints nothing for too long. If the chosen agent cannot answer (not signed in, no usage left, missing model), another installed agent may answer instead and Nour says why.
ProReview Nour privacy and recovery
Before every turn that may change files, Nour saves a snapshot of the work tree; Changes from this turn lists what changed, and Undo this turn puts the work tree back. A snapshot does not cover pushes or files outside the repository. Your messages go to the agent CLI you chose, under its own provider’s policy; GitTree never stores an API key or calls a model itself.
ProConfigure agents and models
Preferences › Nour (AI) › Agents lists the agent CLIs GitTree found, marked Installed or Not installed. Choose the Agent for new chats, a Model for each (empty uses the agent’s own default), and the Automatic selection order that First one installed follows. Test checks an agent works on this computer.
Pro
Preferences
12 guidesMake GitTree yours: how it runs Git, who you commit as, how you connect and sign, how it looks, and how to move or reset your settings.
Find and change Preferences
Preferences has a page per area, such as General, Profiles, SSH, Integrations, Nour (AI), External Tools and UI Customization, plus Repo-Specific Preferences for each open repository. Search preferences finds a setting by name, description or key, and each setting says where it Saves to: App, Profile or Repository.
FreeAppearance and language
Preferences › UI Customization sets the Theme (light, dark and high-contrast versions), Follow the system appearance, the Language (English or Arabic, laid out right to left), Zoom, how Dates are shown and Reduce motion.
FreeConfigure Git and repository behavior
Preferences › General holds how GitTree drives Git: the Git executable, Pull mode, Auto-fetch interval, rebase options, Long paths and Line endings. Repo-Specific Preferences overrides some of them for one repository, such as its Base branch, auto-fetch, commit template and how it notices file changes.
FreeManage Git identities and profiles
A profile is a name and email for commits, plus an optional signing key and SSH command, that you can switch between. By default it is Passed to each git command GitTree runs, so
Free~/.gitconfigis never changed and a repository’s own name or email still wins; Written to ~/.gitconfig makes every git tool use it.Configure SSH in GitTree
Preferences › SSH lists the keys in your
Free.sshfolder, creates new ones, shows each host from your SSH configuration and tests a connection. GitTree never starts an SSH agent and never edits~/.ssh/configorcore.sshCommand; a key you choose for SSH remotes is passed to git commands it runs.Configure commit and tag signing
Preferences › Commit Signing picks the Format (OpenPGP, SSH key or X.509) and Key, and whether to Sign every commit and Sign every annotated tag. Nothing is written until you press Apply to Global Git Config. The graph and commit details then show each commit’s signature state.
FreeConfigure tools and file encoding
Diffs and files that are not UTF-8 are read with Preferences › Editor › Default encoding; a byte-order mark always wins, and bytes that do not fit show as �. Line endings (
Freecore.autocrlf) decides how git converts CRLF and LF, and Long paths lets git create paths over 260 characters on Windows.Configure notifications and logging
Preferences › Notifications sets Where notifications appear, whether to Show success notifications, and Desktop notifications from your system. Extended logging in General writes more detail to the local log, from the next launch, to help diagnose a problem; nothing is sent anywhere.
FreeConfigure Nour privileges
Two settings bound Nour. What Nour may do in a repository sets what the agent itself may do there: Read only, Edit files, no commands or Everything, as in a terminal. What Nour may do in GitTree sets, for each kind and area of app action, Never, Ask me first or On its own; risky changes always ask.
ProConfigure integration refresh
Preferences › Integrations controls how GitTree reads your hosting accounts: how old the lists may get before Refresh pull requests, issues and checks, whether to Refresh when I come back, CI/CD log defaults, and where author pictures come from. Reading happens only while GitTree’s window is in front.
ProBack up, import or reset settings
Preferences › General › Back up, restore and reset exports your app settings, profiles and git settings to a file, imports such a file, or resets everything. An export never contains passwords, tokens or account details, nor any repository’s settings. Git settings from an import are written to
Free~/.gitconfigonly after you review them.Check for and install updates
Check for Updates… asks whether a newer GitTree exists. On macOS and Windows the update bar downloads it, checks the download, and says Restart to install it; GitTree waits for any running Git operation before it closes. On Linux, install the new version from the Linux download page. What’s New… shows the release notes.
Free
Troubleshooting
12 guidesSomething went wrong? Each page starts from what GitTree tells you and gives the fix, with no guessing.
GitTree cannot find Git
GitTree uses your own Git installation and never bundles or installs one. If none is found it shows GitTree needs Git; if the one found is older than 2.39 it shows This Git is too old. Install or update Git, or press Locate Git… to choose it, then Check again.
FreeA repository will not open
When a folder cannot be opened, GitTree says why and offers the next step: This folder is not a Git repository (initialize or choose another), This cannot be opened as a repository (missing path), GitTree cannot read this folder (permissions), or This repository belongs to another user (Git’s ownership check).
FreeChanges are not refreshing
GitTree notices edits made in other programs through your system’s change notifications. On WSL folders and network shares those notifications do not arrive, so Automatic checks the folder every few seconds instead. If changes still appear late, force the checking mode for that repository or refresh by hand.
FreeA remote authentication attempt failed
Git signs in to a remote with your own credential helper or SSH key first. … needs you to sign in. means nothing answered; … refused the credentials sent for this repository. means what was sent is no longer valid or not allowed. Fix the credential Git uses; a connected account fills in only when your helpers have nothing, or when you choose it for a repository.
FreeA push was rejected
A push is refused for one of three reasons, and GitTree says which. The remote refused …: the remote has commits your branch does not. The remote declined the push: a hook or branch protection said no, with its reason. … moved: a force push with lease found the remote no longer where you last fetched it, so nothing was replaced.
FreeA Git operation needs attention
When a merge, rebase, cherry-pick, revert or bisect stops partway, GitTree shows a banner such as Rebasing … onto …, step 3 of 7 and marks the tab rebase in progress. Most commands wait until it is finished: resolve any conflicts, then Continue, Skip the step, or Abort… to go back to where you started.
FreeAn integration action is unavailable
When a hosting action cannot be used, GitTree says why instead of failing silently. The usual reasons are: it is part of GitTree Pro; no account is connected for the remote’s host; the token needs reconnecting; your role on the provider does not allow it; the provider does not offer it; or the provider is limiting requests for a while.
FreeNour cannot start or finish
Nour runs a coding-agent CLI on your computer, so most problems are the CLI’s: not installed, not signed in, no usage left, the model you set is unavailable, or it needs Node.js. GitTree also refuses to start a turn in a restricted repository, or when it cannot save the snapshot that makes the turn undoable.
FreeA pipeline or log cannot be loaded
GitTree says why a run or log is missing: This repository’s host does not list … runs., This log has expired on …, This account may not read logs here., … offers no log from outside its own page., or that the provider is limiting requests. Most have one fix; some only open the provider’s page.
FreeA keyring or SSH request failed
GitTree keeps account tokens, its sign-in and remembered SSH passphrases only in your system keychain: the macOS Keychain, Windows Credential Manager, or the Secret Service (GNOME Keyring or KeePassXC) on Linux. When the keychain says no, GitTree asks you to allow access and try again; it never falls back to a file.
FreeUse GitTree while offline
GitTree is local-first: every local Git feature works without a connection, including commits, branches, merges, rebases, stashes, history and undo. Fetch, pull, push, hosting integrations, CI/CD and Nour’s provider need the network; while offline GitTree shows the last data it read and says so.
FreeCollect and share a support report
When GitTree catches an error it saves a report on this computer; nothing is sent anywhere. Report a Bug… shows what would be copied (the saved report with tokens and passwords removed, or a short summary), lets you choose, then opens the support form on the GitTree website for you to paste it. Contact Support… writes to the support address.
Free