Подтвердить что ты не робот

Что делает `git checkout...` do?

Иногда я случайно пишу git checkout ..., что помещает меня в состояние отдельной головы. Мне было интересно, почему. Здесь "точка-история":

> git checkout .
# checks out current directory
> git checkout ..
# Checks out parent directory, if in repository.
> git checkout ...
# Puts into detached head state?
> git checkout ....
error: pathspec '....' did not match any file(s) known to git.
4b9b3361

Ответ 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}