Skip to content
overterm
Documentation

Overgit

The repository's history, graph, branches, tags, remotes, stashes and worktrees in the sidebar.

Overgit is the git panel in the sidebar: the checkout’s commits with a lane-based graph, its branches with how far ahead and behind they are, its pull requests, worktrees, stashes, tags and remotes — and a commit’s own diff in the right-hand pane.

⌥⌘G opens the sidebar on it. The palette’s Overgit does the same, and the View menu’s item is ticked while the sidebar is on it. The sidebar’s other panels are Files, Sessions and Snippets; ⌘B toggles the sidebar itself.

Outside a git repository the panel says “Not in a git repository”.

Sections

Each section opens and closes on its own, and that is not decoration: a section that is shut is not read. Overgit reads only while it is the panel on screen and only the sections that are open, so a sidebar left on it costs nothing when you are not looking. Shutting a section keeps what it read, so reopening does not blink.

Section Read from
Commits git log with full decoration, including each commit’s parents
Branches git for-each-ref — local and remote, with ahead/behind and “upstream gone”
Pull Requests the pull requests WorktreeModel already asked your gh for
Worktrees git worktree list, with the merge marks and pull requests from the same source
Stashes git stash list
Tags git for-each-ref, with each tag’s subject and short SHA
Remotes git remote -v, showing each remote’s host

Pull requests are not asked for twice: Overterm already asks gh once a minute for the whole repository, and a second asker would double the rate limit for the same answer. The uncommitted counts shown in the overview are the changes pane’s, for the same reason.

Full decoration (--decorate=full) is not cosmetic. Short names cannot be told apart — feature/x is a local branch and origin/x is not — and the full refname says which without guessing.

The graph

Beside the commit rows, a lane graph drawn per row. A lane is a column some commit is expected in: a commit takes the lowest lane already waiting for it, else the lowest free one; its first parent inherits that lane and its other parents take their own; a lane nobody is waiting in is free again at once. Six lanes therefore serve a repository with a hundred branches, as long as only six overlap.

Past that budget, lanes are drawn on top of the last one rather than widening the sidebar without end — a sidebar can be 180 pt wide, and an exact graph there is worth less than a subject you can read. Commit rows are a fixed 36 pt so the lines meet.

Branch names are shown as a tree of folders, so feat/a and feat/b fold together.

Row actions

Row Menu
a commit Show This Commit, Copy SHA, Copy Subject
a branch Check Out, New Worktree Here…, Copy Name
a pull request opens the right-hand pane on it when it is the current branch, else Open on GitHub
a worktree see Worktrees and tasks
a stash Apply, Drop…

A commit’s diff

Show This Commit opens the commit in the right-hand pane — a fourth view beside Changes, Pull Request and Usage, not a column of its own, so the “right of the window is one slot” rule holds and the browser steps aside as it does for the changes pane.

The pane runs git show for the commit and once per file, and draws the files with the same cards and the same intra-line diff marks the changes pane uses, without the stage box or Discard. A merge commit is shown against its first parent — what it brought in — and the pane says so.

Two settings

Key Default What it does
general.overgitCommits 300 How many commits the history and its graph read. More is a longer read on a repository with a long history. 50–2000.
general.overgitAllRefs false Graph every branch and tag rather than just the current branch, so branches that have not been merged appear.

Both are in Settings ▸ General ▸ Overgit. See Settings.

Where Worktrees went

Worktrees used to be a sidebar panel with an icon of its own; it is now a section of Overgit. A sidebar left on the old panel comes back on Overgit rather than empty.