Correct.
There are a few things in Git that are 0 based, but not so many.
* parent numbers are 1-based. HEAD~1 is the "previous commit", aka
"first parent". HEAD~0 is the HEAD itself.
* merge parent numbers are 2-based (sanity of this statement is
already questionable). If HEAD is a merge, HEAD~2 is the
"(first) side branch that was merged", HEAD~3 is the "(second)
side brnach that was merged (in an octopus merge), and so on.
* reflog entries are 1-based. @{1} is the "previous object pointed
by the current branch", @{2} is one before that. @{0} is the
current branch itself. * stash entries are counted 0-based. "git stash list" shows from
stash@{0} that is the most recently created stash entry.