Skip to content

Reading the commit graph

The graph is where you'll spend most of your time. It draws your history as a swimlane graph: each commit is a dot on a coloured lane, with curved edges connecting parents to children. It's rendered on a fast canvas that stays smooth on repositories with hundreds of thousands of commits — only the rows on screen are ever drawn, and scrolling keeps every commit's text readable the whole time.

What you're looking at

  • The top row is your working directory. Pinned above all real history is an Uncommitted changes row. Select it to open the working-directory view and stage/commit. It shows a badge when you have uncommitted work.
  • The HEAD marker tells you where you are. The commit you currently have checked out (HEAD) wears a clear "you are here" marker — an accent ring around its dot and a bar down its row. When you've scrolled away and want to get back, press ⌘⇧H (or the crosshair button in the top bar) to recentre on it.
  • Dimmed commits are already merged. Every commit that's already part of your current branch is drawn dimmed, so unmerged work stands out — you can see at a glance what's new on a feature branch versus what's already in main.
  • Ref labels live in their own column. Branch and tag names sit in a dedicated left column rather than cluttering the commit messages. Hover a truncated label to see its full name.

Selecting a commit

Click any commit row (or move to it with the keyboard) to select it. The detail panel then shows everything about that commit:

  • the author and committer split out separately (so you can tell a rebased or cherry-picked commit apart from the original),
  • its GPG signature status,
  • a diffstat and a file tree,
  • and a syntax-highlighted diff you can expand to a full-page view for reading a real changeset comfortably.

Acting on a commit

Two equivalent ways to operate on a commit:

  • Right-click the commit row for its context menu: cherry-pick, merge, or revert it (among others). See Cherry-pick, merge & revert.
  • Drag and dropshift-drag a commit onto your current position to cherry-pick it, or drag a branch to merge. When something doesn't apply cleanly, GitCat's 3-way conflict resolver opens instead of leaving you in a broken state.

Right-clicking a branch or tag label (rather than a commit) gives a different menu: check it out, rename it, delete it, or check out a remote-tracking branch. See Branches & tags.

Moving around

You can drive the graph entirely from the keyboard:

KeyAction
j / kMove down / up one commit
gg / GJump to the top / bottom of the graph
Ctrl-D / Ctrl-UPage down / up
/Search within the graph
⌘⇧HRecentre on HEAD
⌘KOpen the command palette (jump to any commit, ref, or tool)

The ⌘K command palette can also find and show branches that aren't currently listed in the sidebar — search for one, pick it, and it appears on the graph.

When the graph is busy

A few controls (in the sidebar and Settings) help with a crowded history:

  • Branch visibility — hide or show individual branches, "Hide all branches" to start clean and hand-pick a few, or turn on Auto to always show just the current branch plus anything with unpushed or unmerged work.
  • Ref label priority — when a commit's labels don't all fit the gutter, Settings lets you choose whether tags or branches show first; click a row's +N chip to cycle the rest into view.
  • Show all tags — by default a commit with several tags shows the first; a Settings toggle draws all of them.

Why it stays fast

You don't need to configure anything, but it's worth knowing: switching branches, creating or deleting a branch or tag, and staging don't re-walk your whole history — GitCat recognises the set of commits hasn't changed and updates the refs in place, so a checkout on a huge repo is immediate. Only operations that genuinely add or remove commits (commit, merge, pull) do a full reload.


Next: Committing & staging.

Released under the GNU General Public License v3.0 or later.