我在使用不区分大小写的文件系统(HFS + [CI])的本地计算机(OS-X 10.10)上进行测试 - 当我重置为头部时:
$ git reset head --hard
$ git reset HEAD --hard
和
$ git checkout 4f2c
$ git checkout 4F2C
具有完全相同的结果。据我所知,GIT将refs存储在./git/refs
内,但底层文件系统的区分大小写会影响结果吗?
我是否会在区分大小写的文件系统上获得相同的结果?
答案 0 :(得分:6)
是的,它们不区分大小写。不,区分大小写的文件系统无关紧要。因为git
refs是SHA-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
是两个不同的文件。
请注意,即使在不区分大小写的文件系统上,您的引用也可能会在指定每行引用的文件中“打包”。在这种情况下,无论文件系统如何,您的引用始终区分大小写。