【发布时间】:2014-11-16 13:54:17
【问题描述】:
在 Windows 上使用 msysgit,我可以这样做:
git checkout head
或
git checkout HEAD
两者都有效。我没有要测试的 linux 环境,但我只是好奇:HEAD 是否设计不区分大小写?所有平台都这样吗?
【问题讨论】:
标签: git
在 Windows 上使用 msysgit,我可以这样做:
git checkout head
或
git checkout HEAD
两者都有效。我没有要测试的 linux 环境,但我只是好奇:HEAD 是否设计不区分大小写?所有平台都这样吗?
【问题讨论】:
标签: git
HEAD 在 Linux 上区分大小写。
例如:
$ git checkout head
error: pathspec 'head' did not match any file(s) known to git.
$ git checkout HEAD
Your branch is up-to-date with 'origin/master'.
Ubuntu 14.04 上的 Git 版本 1.9.1。
【讨论】:
@。
HEAD 是否区分大小写取决于操作系统的文件系统是否区分大小写。
当你签出 HEAD 时,git 实际上会在文件夹 .git 下寻找一个名为“HEAD”的文件。如果你用小写字母输入 HEAD,git 会查找带小写字母的文件名。可以看到 .git/HEAD 文件实际上包含了提交 HEAD 指向的哈希码。
因此,HEAD 的典型区分大小写是:
【讨论】:
git --version 返回git version 2.20.1 (Apple Git-117) 来重现 Lorenzo Marcon 在 Mojave 上的行为,而且我的文件系统不区分大小写。例如,我可以用rm A 删除文件a。同样git push origin HEad 似乎推送HEAD,git symbolic-ref HEad 和git symbolic-ref HEAD 都返回refs/heads/foo_branch,git branch HEad 和git checkout HEad 很有趣,而git branch -d HEad 有点令人惊讶地做了正确的事情并删除了@ 987654333@ 分支没有明显破坏我的回购。
回答涵盖 Mac OSX(小牛队):
$ git checkout HEAD
Your branch is up-to-date with 'origin/master'.
但是:
$ git checkout head
Note: checking out 'head'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at f44b740... fix if endScreen(s) not present
顺便说一下,那个哈希是当前分支的头(在我的测试中,同样包含在.git/refs/heads/master中)
有趣的行为。
(git 1.8.5.2)
【讨论】:
HEAD 在 Linux 环境中区分大小写。据我所知,它只在 mysysgit 中不区分大小写。
在 Linux 环境中它给出:error: pathspec 'head' did not match any file(s) known to git.
【讨论】: