Skip to main content
The commit graph draws the repository’s commits and branch structure as lanes.
A commit graph with multiple colored lanes, ref chips, and author/date labels. Each branch chip carries a laptop icon and a globe icon in front of a single branch name such as main or feature/protocol-v3, while tags such as sdk/v2.4.0 sit in their own neutral-colored chips

Reading the lanes

Each vertical line is one lane, and every live branch gets one.
  • The leftmost lane is the trunk, following the first parent down. It runs straight from top to bottom.
  • The lanes to the right are side branches that split off. Once merged, they converge back toward the trunk.
  • A connector’s color follows the lane color of the vertical segment it passes through.
Lane colors distinguish branches; they carry no fixed meaning.

Pushed vs unpushed nodes

A node’s fill shows whether it is on a remote. A filled circle is a commit that exists on some remote; a hollow ring is a commit that exists only locally. If the currently checked-out commit (HEAD) is unpushed, only that node shows a rippling wave animation.
Pushed status is based on remote state as of the last git fetch.

Ref chips

The refs pointing at a commit are grouped by branch name, and each group draws one chip in that commit’s lane color (tags use a fixed neutral color instead). A chip writes the branch name once and puts an icon in front of it for every place that branch lives:
  • Laptop icon means the branch exists locally. The checked-out branch is bold and carries a checkmark.
  • One icon per remote appears, with origin first and the rest in name order. Hover an icon to see which remote it stands for.
  • Tags are never merged into a branch chip; each keeps its own chip with a tag icon and the tag name.
So a branch that lives locally and on two remotes is a single feature chip with three icons, and a branch that exists only on a remote is a feature chip with just that remote’s icon. The missing laptop icon is what tells you there’s no local copy. Remote branches are never written as origin/feature in the graph.
A remote’s icon comes from that remote’s own URL. A repository whose origin is on GitHub and whose upstream is on GitLab shows a different mark for each; an unrecognized host falls back to a globe. Two remotes on the same host therefore look alike. Give one of them a custom icon to tell them apart at a glance.
No chip is ever dropped from a row. When a row runs out of width, the names shrink with an ellipsis: chips with no local branch give way first, and the branch you have locally is the last thing to shrink.
Double-click a chip to check it out. Right-click still reaches each ref on its own: the menu lists feature, origin/feature, and upstream/feature as separate submenus.

Shallow repositories

The commit graph on the History tab of the orbit-console repository. Below the feature/offline-sync branch on the orange lane, the Queue writes while offline row carries a shallow badge on its right, and a dashed line runs from that node down to the List connected fleets node on the blue main lane. The row's context menu is open, listing Create branch…, Create tag…, Checkout commit, Compare, Cherry-pick commit, Unshallow, Reset main to here…, and Revert commit
When you open a shallow repository (one with a .git/shallow file), the boundary commit where Git stops walking earlier history carries a shallow badge on its row. If the boundary commit’s parent object exists locally and also appears in the graph, a dashed edge connects the two. When the parent object is missing, as in a typical --depth=1 clone, the commit gets only the badge and is drawn as a root.
The dashed edge is for display only. Git operations such as squash and rebase work on the history as Git sees it, cut off at the boundary.
Right-click the boundary commit and choose Unshallow to fill in the missing history with git fetch --unshallow. The graph redraws when it finishes.

Scope toggle (all branches / current branch)

  • Main worktree always draws all branches.
  • Linked worktree defaults to Show current branch only, switched with the toggle button in the header.
Per-worktree state covers the exact conditions.
A commit graph in a linked worktree with the scope narrowed to show only the current branch

Graph search and filters

1

Open search

A search bar opens in the upper right of the graph. The key that opens it is listed in Shortcuts.
2

Enter a search term

Free text matches case-insensitively against the start of the commit SHA and the commit summary. A current / total count is displayed.
3

Combine filters

Typing a key:value filter alongside free text turns it into a pill, and you can combine several.Wrap values containing spaces in double quotes.
4

Move between results

Moving between results with the search bar’s Previous match and Next match buttons scrolls to and selects that commit so it stays visible. When there are results, only matching commits stay sharp and the rest fade.
The commit search bar open in the upper right of the graph, showing a magnifying-glass icon, the 'Search commits…' input field, and the Previous match, Next match, and Close search buttons
Search covers the commits loaded in the current scope. Free text and message: search the summary only.

Minimap

A minimap floating in the lower right of the graph lets you move quickly through a long history.
  • It draws only the lane, node, and edge topology at a reduced scale, and marks the currently visible range with a viewport box.
  • Clicking anywhere centers the view on that point, and dragging scrubs continuously. Wheel scrolling also works.
  • The relative date chips on the right (“Today”, “3 weeks ago”) give you a rough sense of time position.
  • It hides automatically when the history is short enough that no scrolling is needed.
The minimap panel, showing a viewport box marking the currently visible range over the reduced-scale graph topology, with relative date chips

Date sections

Commits sharing the same relative date label are grouped into one section, with the label shown to the right of the section’s first row. The labels grow coarser the older the commit: Today / Yesterday / N days ago (up to 6 days) → N weeks ago (up to 29 days) → N months ago (up to 364 days) → N years ago. Hover over a label to see the exact date in a tooltip.
Commits are ordered by topological sort, so the order is not always strictly chronological. If the same label reappears at a separate position, its section header is shown again.

Selecting a commit and its details

Click a commit and its details (author, time, message, and changed files) open on the right. Selecting several makes them the target for squashing and multi-commit cherry-pick.
A graph with one commit selected, and a commit detail panel on the right showing author, time, message, and changed files

HEAD ancestry highlighting

The graph draws commits reachable from the current HEAD sharply, and dims everything else. The reference point is always HEAD. Selecting a different commit does not change it.
When there is at least one search result, this highlighting is replaced by search-result highlighting.
Double-click a commit to check it out; right-click it to open the action menu. See Checkout, Branches & tags, and Rebase & merge. The rules for reading the right-click menu are covered in Interface tour.