Blame

Which commit last touched each line, and stepping back through the ones before it.

⌥⌘B annotates a file line by line with the commit that last changed it.

It is for one question: why is this line like this? The answer is nearly always in the commit message of whoever wrote it, and blame is how you get from the line to that message.

Stepping back

The last commit to touch a line is often not the interesting one — someone reindented the file, or renamed a variable across it, and the change you are looking for is underneath. From any line you can navigate to the previous commit that touched it and annotate from there, repeatedly, until you reach the one that actually decided something.

That walk is the whole value of blame. A single annotation tells you who formatted the file; the walk tells you who wrote it.

A reindent does not need the walk. Ignore Whitespace Changes, under Blame options — the button beside Close — looks past commits that changed nothing in a line but its whitespace, to the one that last changed what the line says.

How old each line is

Each annotation has a thin bar down its edge, coloured by the age of its commit against the other commits in the file: faint for the oldest, strongest for the newest, and strongest too for lines you have not committed. Show Commit Age, in the same menu, hides the bars.

Both options hold while you step back, and return to where they started — bars shown, whitespace counted — when you close blame.

From blame to the commit

Each annotation leads to the commit in the history, where you get the whole message, the rest of the files it changed, and everything you can do with a commit from there.