invocation

tig                      # log of current branch
tig main..HEAD           # ← your review loop
tig --first-parent main..HEAD   # skip merged-in noise
tig <rev> -- path/       # scoped to a path
tig -S'funcName'         # pickaxe: commits touching that string
tig status               # stage view
tig blame file.go        # blame, navigable
tig show <rev>
tig stash / tig refs / tig grep <pat>
git whatever | tig       # pager mode, any git output

core motion

keydoes
j kline down/up
Enteropen selection (splits diff pane)
J Knext/prev commit in the parent view — diff pane follows
Tabjump between panes
<back to previous view
q / Qclose view / quit tig
Ctrl-D Ctrl-Uhalf page
Home Endtop / bottom
/ ? n Nsearch fwd, search back, next, prev
Rrefresh
Omaximize current pane

open tig main..HEAD, hit Enter once, then just hold J — you walk the branch commit by commit without ever leaving the diff.

views (from anywhere)

m main · d diff · l log · t tree · b blame · s status · c stage · r refs · y stash · g grep · h help

t is underused — tree view at the selected commit lets you see repo state at that point, not just the delta. good for “wait, did this file even exist yet.”

in the diff

keydoes
@next chunk
[ ]shrink / grow diff context
,go to parent commit
ustage/unstage chunk (stage view)
!revert chunk (stage view)
1stage single line (stage view)

toggles

% file-filter on the selected file (limits the log to it — killer for “show me every commit that touched this”) · G revision graph · X show sha · D date format · W ignore whitespace · F refs · o options menu