Skip to content

The commit graph

Every repository you open lands on the commit graph: one row per commit, newest first, with the branch lanes drawn on the left and the refs that point at each commit shown as pills. It is the view you spend most of your time in, and the entry point to everything else — selecting a row opens that commit, and the topmost row is your uncommitted work.

Read your history at a glance

The graph draws one lane per line of development, so a branch that was created, worked on and merged back reads as a single visible curve instead of a flat list you have to reconstruct in your head. Each row carries the author's avatar, the commit subject, the short SHA and the date; branch and tag names appear as coloured pills on the commit they actually point at, which is how you tell where main, your feature branch and your remote have diverged. The sidebar on the left lists the same refs as a tree — branches, tags, stashes, submodules and worktrees — and the topmost graph row is always your working tree, present as soon as you have an uncommitted change.

Read your history at a glance

Captured from the running app by this scenario.

You should see

  • The commit graph is shown

Hiding a column from the graph header

Right-clicking the header opens a menu of every column, a checkmark against the ones currently shown — hiding one is a click, and bringing it back is the same click again. At least one column always stays visible, so the header can never disappear entirely.

Hiding a column from the graph header

Captured from the running app by this scenario.

Do this

  1. Right-click the graph header
  2. Hide the sha column
  3. Right-click the graph header
  4. Show the sha column

You should see

  • The column menu is shown
  • The graph header does not show the SHA column
  • The graph header shows the SHA column

Inspect a single commit

Selecting a row opens the commit details panel next to the graph: the full message, the author and committer, the parents, and the list of files the commit touched. Clicking a file in that list shows its diff for that commit alone — so you can answer "what actually changed here?" without leaving the graph or running git show in a terminal. The selection is the anchor for the commit actions too: right-clicking the row offers the operations that make sense for it, such as reverting it, resetting onto it, tagging it or creating a branch from it.

Inspect a single commit

Captured from the running app by this scenario.

Do this

  1. Select the newest commit in the graph

You should see

  • The commit details panel is shown

Selecting several commits shows their combined diff

Cmd-clicking a second row turns the single commit panel into a merged one for the whole selection: the commits listed in order, and one file list for everything they touched between them — a file two of them both edited shows up once, with its net change across the range, not twice.

Selecting several commits shows their combined diff

Captured from the running app by this scenario.

Do this

  1. Select the HEAD~2 commit in the graph
  2. Add the HEAD~1 commit to the graph selection

You should see

  • The multi-commit panel shows 2 commits selected
  • The multi-commit panel lists counter.txt as a changed file

Opening a commit on GitHub, resolved from the repository's own remote

Every commit's palette entry offers a link to that same commit on GitHub — resolved from the repository's own "origin" remote rather than a separate setup step. Nothing configured (or configured to somewhere that isn't GitHub) surfaces a clear error instead of a dead click; a real GitHub remote turns the same entry into the exact commit's page.

Opening a commit on GitHub, resolved from the repository's own remote

Captured from the running app by this scenario.

Do this

  1. Select the newest commit in the graph
  2. Open the command palette
  3. Pick Open commit on GitHub from the palette
  4. Open the command palette

You should see

  • An error notification reading No GitHub remote configured for this repository is displayed
  • The palette offers Open commit on GitHub

A commit's linked pull request shows as a badge

A commit whose SHA has a pull request on GitHub gets a badge in its details panel linking straight to it — the PR's number and title, with a distinct icon once it's merged.

A commit's linked pull request shows as a badge

Captured from the running app by this scenario.

Do this

  1. Select the newest commit in the graph

You should see

  • The commit details panel is shown
  • The commit's pull request badge shows #42 titled Fix flaky test
  • The commit's pull request badge shows it as open
  • No error notification is displayed

Filtering the graph with ⌘F

⌘F opens a small search bar floating over the graph and steps through the commits matching what you type — by subject, body, author name or email, or SHA — without hiding the rest of the history the way a filter would. The counter says which match you're on and how many there are in total; Enter and the arrows step forward, Shift+Enter back.

Filtering the graph with ⌘F

Captured from the running app by this scenario.

Do this

  1. Open the commit search panel
  2. Search the commit graph for notification
  3. Go to the next commit search match

You should see

  • The commit search shows 1/5
  • The commit search shows 2/5

Filtering the graph by author

The funnel in the Author column header narrows attention to one or more people's own work, without hiding anything else the way ⌘F's search does not either — every commit stays in the graph, and everyone but the selected authors just dims, so the shape of history around their commits is still there to read.

Filtering the graph by author

Captured from the running app by this scenario.

Do this

  1. Open the author filter
  2. Filter the graph by author Marie Dubois
  3. Clear the author filter

You should see

  • The author filter shows 1 selected
  • The commit chore: extend app on main is not dimmed
  • The commit chore: initial app is dimmed
  • The commit chore: initial app is not dimmed

This page is generated from apps/e2e/features/commit-graph.feature, the end-to-end test that drives the feature it describes.

MIT licensed · Screenshots exported from the real app by the end-to-end suite.