Que fait `git checkout...'?

J'écris parfois accidentellement git checkout ..., ce qui me met dans un État de tête détaché. Je me demandais pourquoi. Voici le "point histoire":

> 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.
54
git
demandé sur Chris Jefferson 2017-09-07 19:31:08

1 réponses

C'est une forme dégénérée de cette syntaxe, décrite dans la page de manuel gitrevisions(7):

   <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.

Notez que le dernier bit, "lorsque <rev1> ou <rev2> est omis, il est par défaut HEAD". Cela signifie que l'écriture ... est équivalent à HEAD...HEAD. Lorsqu'il est utilisé dans git checkout, cela finit par évaluer l'id de validation de HEAD. C'est-à-dire que vous faites juste:

git checkout HEAD^{commit}
48
répondu larsks 2017-09-08 01:04:56