出于好奇,我尝试了以下方法:
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
最佳答案
在 https://github.com/git/git/blob/ad7044857660af7ffaaf8fbbccc77b817d1b938f/builtin/checkout.c#L624字符串 "HEAD"
是特殊大小写的空操作,带有 strcmp
(区分大小写)。在 git 系统的其他地方,有些东西不区分大小写地解析 checkout
的参数(或者将其作为文件名查找,使其可能不区分大小写,具体取决于文件系统)。
关于git - "checkout head"是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20683611/