“结账头”是做什么的?

时间:2013-12-19 13:58:37

标签: git

出于好奇,我尝试了以下内容:

git checkout head

我得到了这个:

$ git checkout head
Note: checking out 'head'.
You are in 'detached HEAD' state.

Me@MyPC /c/repo ((9da1bd7...))
$

尽管

git checkout HEAD

什么都不做(正如预期的那样)。 那么前命令到底在做什么呢?

更多信息:是的,我在Windows上。据我所知,它没有创建标签或分支:

Me@MyPC /c/repo ((9da1bd7...))
$ git log -n 1
commit 9da1bd740434923ae55ca1b50efb7c62eb6e0c35
Author: someone else
Date:   Fri Dec 6 15:44:08 2013 +0100

Me@MyPC /c/repo ((9da1bd7...))
$ git tag -l
TestRelease

Me@MyPC /c/repo ((9da1bd7...))
$ git branch -l
* (detached from head)
  master

2 个答案:

答案 0 :(得分:6)

https://github.com/git/git/blob/ad7044857660af7ffaaf8fbbccc77b817d1b938f/builtin/checkout.c#L624,字符串"HEAD"特殊为无操作,带有strcmp(区分大小写)。在git系统的其他地方,有些东西会将参数解析为checkout不区分大小写(或者将其查找为文件名,使其可能不区分大小写,具体取决于文件系统)。

答案 1 :(得分:1)

从你的指出。我认为你有一个head标签,它指向你当前所在分支机构的非最新提交。

我尝试在干净的仓库(在Ubuntu上测试)上做了你做的事情,它抱怨了现有的分支head

$git init  
$git checkout head
head error: pathspec 'head' did not match any file(s) known to git.