GIT引用是否始终不区分大小写?

时间:2015-06-28 17:28:35

标签: git

我在使用不区分大小写的文件系统(HFS + [CI])的本地计算机(OS-X 10.10)上进行测试 - 当我重置为头部时:

$ git reset head --hard
$ git reset HEAD --hard

$ git checkout 4f2c
$ git checkout 4F2C

具有完全相同的结果。据我所知,GIT将refs存储在./git/refs内,但底层文件系统的区分大小写会影响结果吗?

我是否会在区分大小写的文件系统上获得相同的结果?

2 个答案:

答案 0 :(得分:6)

是的,它们不区分大小写。不,区分大小写的文件系统无关紧要。因为git refsSHA-1 hash的一部分,而且它们是十六进制数字(base-16,它们看起来像字母)。至少对于commit-id。正如评论中@EdwardThomson所指出的, ref-name 可能(或可能不)区分大小写(取决于底层文件系统以及存储机制是否松散)或包装)。

答案 1 :(得分:5)

不,您不会在区分大小写的文件系统上获得相同的结果。如果你跑了:

git reset branch --head

在区分大小写的文件系统上然后与运行不同:

git reset BRANCH --hard

由于引用通常存储在文件系统上(在.git/refs/heads文件夹中),因此文件系统的区分大小写起作用。在区分大小写的文件系统上,.git/refs/heads/branch.git/refs/heads/BRANCH是两个不同的文件。

请注意,即使在不区分大小写的文件系统上,您的引用也可能会在指定每行引用的文件中“打包”。在这种情况下,无论文件系统如何,您的引用始终区分大小写。