Log
Press 2 to open the log. tab switches between the two panes.
small ⎇ main ╭──────────────────────────────────────╮╭──────────────────────────────────────╮ │ Commit — de67d15 ││ Log — all (4) │ │──────────────────────────────────────││──────────────────────────────────────│ │commit de67d153e7d3c55ff091005a1b86810││◆╮ de67d15 FI ★ main origin/synced…│ │Author: fixture <fixture@example.com> ││├● 2a99dbd FI feature add feature.t…│ │Date: 2020-01-01 00:00:00 +0000 ││● ccafee9 FI origin/main edit plai…│ │Parent: ccafee9 2a99dbd ││● f15ce07 FI behind base: files wi…│ │ ││ │ │merge feature into main ││ │ │ ││ │ │feature.txt ││ │ │@@ -0,0 +1 @@ ││ │ │ 1+feature content ││ │ │ ││ │ │ ││ │ │ ││ │ │ ││ │ │ ││ │ │ ││ │ │ ││ │ │ ││ │ ╰──────────────────────────────────────╯╰──────────────────────────────────────╯ / search [ parent ] child a HEAD only tab pane 1/2/3/4 view q quit ? help
Commits
Section titled “Commits”The right pane lists commits: the graph column, the short hash, the author’s initials, any ref labels, then the subject. Commits load a page at a time. The next page is fetched a screenful before the cursor reaches the bottom, so scrolling does not stall. Side branches of merges are never dropped.
The initials are two cells wide whatever the name, and coloured per author, so a run of work by one person reads as one colour without the column shifting the ones after it.
The graph
Section titled “The graph”| Glyph | Meaning |
|---|---|
● |
a commit |
◆ |
a merge |
│ |
a line of history passing this row |
╮ ╭ |
a merge pulling in a branch, which continues below |
┤ ├ |
a branch joining a line of history that is already drawn |
┬ ┼ |
a merge’s run passing a lane |
╭╯ |
a lane sliding into a column a finished branch freed |
The graph closes up as branches end. When a lane finishes, the lanes to its right slide over one column on the following rows, so the graph stays as narrow as the history it shows.
Each column has a colour, and a merge line or a slide takes the colour of the lane it ends in. That lets you follow one branch by colour from the merge that created it back down to where it forked.
Ref labels
Section titled “Ref labels”Refs sit before the subject as small labels: local branches yellow, remote branches blue, tags green. A star marks the branch you are on. Past two refs on one commit the rest collapse into a count, so the subject stays readable.
The log shows every ref by default, the way a graph is usually read. Press a to narrow it to the current branch’s history, and a again to widen it back. The pane title says which you are looking at.
Press enter on a branch in the branches view to open the log on that branch alone, and the pane title names the ref. space there instead jumps to that branch’s tip inside the full graph. esc goes back to the branch list, and 2 widens the log back to every ref.
Search
Section titled “Search”Press / to search. The prompt owns every key while it is open: text goes into the query, backspace deletes a rune, esc closes it and drops the query, and enter closes it and moves to the first match below the cursor.
Matches are underlined as you type, over the subject, the author, the hash and the refs. Once the prompt is closed, n moves to the next match below the cursor and N to the previous one above it. The prompt line says which match you are on.
n loads more of the log until it finds a match, however far down it is. N never has to: everything above the cursor is already loaded.
Following the graph
Section titled “Following the graph”Press [ to move to a commit’s first parent and ] to move back to its nearest child. Both follow the graph rather than the row order, which is what you want once branches interleave and the next row belongs to some other lane. [ loads more of the log if it needs to.
Selected commit
Section titled “Selected commit”The left pane shows the selected commit’s message and its patch, highlighted the same way a working-tree diff is.
A merge shows what it brought in over its first parent. The initial commit shows its whole tree.
Read-only
Section titled “Read-only”Nothing in this view writes to the repository. The staging and commit keys do nothing here.