Ответ 1
Это вырожденная форма этого синтаксиса, описанная на странице gitrevisions(7)
man:
<rev1>...<rev2>
Include commits that are reachable from either <rev1> or <rev2> but
exclude those that are reachable from both. When either <rev1> or
<rev2> is omitted, it defaults to HEAD.
Обратите внимание, что последний бит: "Если не указано <rev1>
или <rev2>
, по умолчанию используется HEAD". Это означает, что запись ...
эквивалентна HEAD...HEAD
. При использовании в git checkout
это заканчивается оценкой идентификатора фиксации HEAD. То есть, вы просто делаете:
git checkout HEAD^{commit}