什么`git结帐…`做的?

我偶尔不小心写了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. 

这是gitrevisions(7)手册页中描述的这种语法的退化forms:

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

请注意,最后一位,“省略<rev2><rev2> ,默认为HEAD”。 这意味着写作...相当于HEAD...HEAD 。 当在git checkout使用时,这将最终评估为HEAD的提交ID。 那就是,你只是在做:

 git checkout HEAD^{commit}