Early alpha · macOS, Windows and Linux

See your Git history.
Then change it with confidence.

GitBob is a free Git client with rich functionality: an interactive commit graph, staging with real diffs, and branches, fetch, pull and push. Every action runs the Git you already have installed.

Free for macOS, Windows and Linux. Version 0.1 alpha. No account.

Bob, the GitBob panda, hugging a Git branch icon.
GitBob's main window: a sidebar of local branches, remotes and tags; a commit graph with coloured lanes, merge curves and branch and tag labels; and a details panel for the selected merge commit listing its SHA, author, parents and changed files.
The commit graph of a sample repository with three feature branches, tags and uncommitted changes.

Highlights

  • A graph you can read

    Every branch, remote, tag and merge, laid out in lanes. Click any commit to inspect it.

  • Your Git, not a copy

    GitBob runs the git command on your machine. Nothing is simulated or reimplemented.

  • Careful with your work

    Destructive actions ask first. Discarded new files go to the Trash, not into the void.

  • Private by default

    No sign-up, no telemetry. It works offline; the network is only used when you fetch, pull or push.

The whole history, in one view

GitBob reads the real commit graph across all your branches, remotes and tags and draws it as lanes, with merges, octopus merges and multiple roots handled correctly.

  • Branch, remote and tag labels, with the current branch and HEAD marked
  • Uncommitted work appears as its own row at the top
  • Arrow keys move through commits; clicking a ref in the sidebar jumps to it
  • Filter by branch, author, or a file or folder
  • Commit details: author, committer, parents, full message and changed files with line counts
  • Open any file in a commit to see its diff
A commit's diff in GitBob: added lines of a TypeScript retry helper shown in green with old and new line numbers, next to the commit's details panel.

Stage, review, commit

Unstaged and staged files sit side by side. Select one to see exactly what changed before it goes into a commit.

  • Stage or unstage single files, or everything at once
  • Diffs for modified, staged, new and binary files
  • Commit with a summary and description, or amend the last commit
  • Failing hooks and a missing Git identity are reported clearly
  • Changes made in your editor or terminal show up automatically
GitBob's working changes view: a diff of src/App.tsx in the centre, lists of unstaged and staged files on the right with Stage and Discard buttons, and a commit composer with a summary, description and a Commit 1 file button.

Branches and remotes

Right-click a branch or commit to do the common things without leaving the graph.

  • Create a branch at any commit, check out, rename and delete
  • Check out a remote branch and GitBob creates the tracking branch
  • Set upstreams and see how far ahead or behind you are
  • Fetch with prune; pull as fast-forward only, merge or rebase
  • Push a new branch and its upstream is set for you
  • Clone from a URL with progress, or start a new repository
  • Several repositories open in tabs, restored next time
  • Add and remove remotes
  • Asks for your password or token when needed, and can remember it in your system keychain
  • SSH key passphrases and new-server fingerprints are confirmed in a dialog
  • GitHub, GitLab, Bitbucket and Azure DevOps: CI status, create pull requests, and review them in the app: files, comments, approve, merge
  • Branches like feature/login are grouped into folders, and remote branches nest under their remote
  • Git LFS: see, track and download large files
  • Fetch, pull and push show progress and can be cancelled
A branch context menu open in GitBob's sidebar with Checkout, Create branch here, Rename, Set upstream and Delete options, over the commit graph.

Side-by-side diffs and a real conflict editor

See changes the way you think about them, and get out of merge conflicts calmly.

  • Side-by-side diff with syntax highlighting for about 80 languages
  • Stage, unstage or discard a single hunk, or just the lines you pick
  • Conflict editor: ours and theirs side by side, an editable result below
  • Ours, Theirs or Both for each conflict, then save and mark it resolved
  • GitBob won't mark a file resolved while conflict markers remain
GitBob's conflict editor: ours and theirs versions of a settings file side by side on top, the editable result with conflict markers below, and Ours, Theirs and Both buttons.

Undo, stash and tag

The time-travel tools are one right-click away, and the risky ones look after your work.

  • Cherry-pick a commit onto your branch, or revert it with a new commit
  • Reset soft, mixed or hard; a hard reset asks first and saves your uncommitted work as a backup stash
  • Stash half-finished work with a message, then pop or apply it later
  • Create annotated or lightweight tags, push and delete them
  • A banner offers Continue, Skip or Abort when a merge, rebase, cherry-pick or revert stops on a conflict
The commit context menu in GitBob with Create branch, Create tag, Cherry-pick, Revert, soft, mixed and hard Reset options, and Checkout.

Rewrite history, read its story

Tidy commits before you share them, and find out why any line looks the way it does.

  • Interactive rebase in a dialog: reorder, reword, squash, fixup or drop
  • Conflicts during a rebase hand over to Continue, Skip or Abort
  • The reflog lists every former state of HEAD; rescue lost work with one right-click
  • Blame any file, now or in any commit, and jump to the commit behind a line
  • Worktrees, submodules and GPG/SSH signature status
GitBob's interactive rebase dialog listing three commits with Pick, Reword and Squash actions while a new commit message is typed.

Find anything, light or dark

Search reaches the whole history, not just what is on screen, and the app fits your desktop.

  • Search by message, author, committer or commit id with ⌘F
  • Matches light up, the rest fades; Enter jumps to the next one
  • Light, dark or match-system theme
  • Command palette (⌘K) and keyboard shortcuts you can rebind
  • Accessibility checked with axe-core in both themes
  • Measured on a 100,000-commit repository: full history in about 3 seconds, graph layout in about 40 ms
Searching the history for forecast in GitBob: matching commits stay bright while the others are dimmed.

Built on real Git

GitBob doesn't pretend. Each button runs a git command on your repository, with arguments passed directly to the process rather than through a shell. If Git refuses, you see why.

What GitBob runs when you take an action
When youGitBob runs
Pullgit pull --ff-onlyby default, so nothing gets merged by surprise
Force pushgit push --force-with-leaseafter you confirm; refuses if the remote moved since your last fetch
Commitgit commit --file=-your message goes in through standard input, untouched
Discard a new fileMove to Trashafter you confirm, so you can still get it back
Delete an unmerged branchgit branch -Donly after a second confirmation

Your data stays yours

There's no account to create and no telemetry in the app. Browsing history, staging and committing all work offline. GitBob only talks to the network when you fetch, pull or push, using your own Git configuration, SSH agent and credential helpers.

A locked-down app

The interface runs in a sandboxed Electron window with context isolation, no Node.js access and a strict content security policy. Every request from the interface to Git is type-checked and limited to repositories you opened.

On the roadmap

Not merged yet. These are planned and not in the app today.

  • Signed installers, and automatic updates on macOS
  • One-click sign-in for GitHub, GitLab, Bitbucket and Azure DevOps
  • Line comments in pull request reviews

Get GitBob

These alpha builds aren't signed with a developer certificate yet. On macOS, open GitBob the first time with right-click → Open. On Windows, choose More info → Run anyway. GitBob needs Git installed. Release notes and older versions: GitHub Releases.

Or build it from source

You'll need Git and Node.js 22 or newer.

  1. Clone the repository

    git clone https://github.com/szabto/gitbob.git
    cd gitbob
  2. Install dependencies

    npm install
  3. Start the app

    npm run dev

Prefer to read the code first? View GitBob on GitHub. GitBob is early alpha software. It's careful with your work, but keep your usual backups and pushes.