Skip to content

Press 2 to open the log. tab switches between the two panes.

small   ⎇ main                                                                  
╭──────────────────────────────────────╮╭──────────────────────────────────────╮
 Commit — de67d15                      Logall (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

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.

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.

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.

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.

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.

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.

Nothing in this view writes to the repository. The staging and commit keys do nothing here.