git - "checkout head"是做什么的?

标签 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

最佳答案

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/

相关文章:

git - 使用 gcloud init 时出错

git rm -r 在子模块中不起作用

python - 如何在命令行重新启动我的 Heroku Django 应用程序?

git - git checkout master + git reset --hard 会做什么?

Git:意外地将冲突注释 merge 到分支中。我该如何删除它们?

git - 将文件添加到 git 存储库但忽略将来对其的更改

git:如何在不禁用 safecrlf 的情况下摆脱 "warning: CRLF will be replaced by LF"?

git - 如何在 Ubuntu 上安装 QtWebEngine

git - 使用 ls 命令时,已删除的文件夹仍然出现在 git bash 中

git - Git Extensions 中的期刊后台 'git status' 干扰交互工作