explaingit

git-up/gitup

11,996Objective-CAudience · developerComplexity · 2/5Setup · easy

TLDR

GitUp is a free Mac Git client with a live interactive commit graph, unlimited undo and redo for any Git operation including rebase and merge, and instant full-text search across all repository history.

Mindmap

mindmap
  root((GitUp))
    What it does
      Interactive git graph
      Unlimited undo redo
      Commit history search
    Key Features
      Drag to reorder
      Auto snapshots
      Direct DB reads
    GitUpKit
      Reusable framework
      libgit2 wrapper
    Audience
      Mac developers
      Git power users
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Reorder, squash, or split commits by dragging them on the live graph without typing any rebase commands.

USE CASE 2

Undo a destructive Git operation such as a failed rebase by rolling back to an automatic snapshot taken before the operation.

USE CASE 3

Search the full text of every commit message and code change across your entire repository history instantly.

Tech stack

Objective-CmacOSlibgit2

Getting it running

Difficulty · easy Time to first run · 5min

Building from source requires an Apple developer account and Xcode, the free pre-built app download requires neither.

No license information is provided in the explanation.

In plain English

GitUp is a Mac application for working with Git, the version-control system that developers use to track changes to code over time. Most Git clients present history as a static log you scroll through. GitUp instead shows your repository as a live, interactive graph that you can directly manipulate: drag commits to reorder them, fold changes into earlier commits, or split one commit into several, all without typing commands. The most notable feature is unlimited undo and redo for nearly every Git operation, including ones that are normally very hard to reverse, like a rebase or a merge. The app also takes automatic snapshots of your repository state, similar to how Time Machine backs up a Mac, so you can roll back to any earlier state with a single click. This makes it much harder to accidentally destroy work. The app also includes instant full-text search across the entire repository history, including the contents of every code change ever recorded. GitUp was created in late 2014 and released as open source in August 2015. It works differently from most Git clients because it reads the Git database files directly from disk rather than running the git command in the background. This approach makes the interface noticeably faster, often faster than typing the equivalent commands in a terminal. The project is available as a free download from the GitUp website or via Homebrew, a Mac package manager. It requires macOS and an Apple ID with a developer account if you want to build it yourself from the source code. The underlying engine, called GitUpKit, is also available separately as a reusable framework. Developers building their own Mac or iOS tools that need to read or write Git repositories can use GitUpKit as a foundation. It wraps a C library called libgit2 but exposes a much cleaner API than that library provides on its own.

Copy-paste prompts

Prompt 1
I accidentally broke my git history with a bad rebase in GitUp. Walk me through using the snapshot and undo feature to roll back my repo to the state it was in before I started.
Prompt 2
I want to use GitUpKit to build a custom Mac app that reads a local Git repository. Show me how to open a repo with GitUpKit and retrieve a list of commits with their messages and authors.
Prompt 3
Help me interactively reorder commits in GitUp to clean up my feature branch before opening a pull request, how do I drag-and-drop commits without causing a merge conflict?
Prompt 4
I am evaluating GitUp versus other Mac Git clients. Explain why reading the Git database files directly instead of spawning a git subprocess makes the interface faster, and what trade-offs that approach has.
Open on GitHub → Explain another repo

← git-up on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.