Mac OS X 中的 git core.ignorecase = false

Bre*_*min 3 git

我已经core.ignorecase=false在本地和全局级别进行了配置,但是当我这样做git checkout MASTER(不是主控)时,我看到了如下所示的奇怪行为。我也做了git branch -v,但没有显示主控。

git checkout master
Switched to branch 'master'

git branch
* master

git checkout MASTER
Switched to branch 'MASTER'

git branch
master 
Run Code Online (Sandbox Code Playgroud)

我们可以看到 上现在没有 (*) 了master我知道 Mac OS X 文件系统不区分大小写,但是

core.ignorecase=falsea)即使在我们的操作系统控制它之后,明确提及它还有什么意义 ?

b) 如果 git 假设 MASTER 和 master 相同,为什么 master 分支上没有 (*) ?[编辑:即使你设置 core.ignorecase = true ,我们仍然会看到这个]

执行 rev-parse ,两者都指向相同的 SHA1。

Die*_*Epp 6

通过设置,core.ignorecase=false您的系统配置错误true,如果您希望 Git 表现合理,则应该将其设置为正确的值。来自git-config手册:

\n
\n

内部变量,支持各种解决方法,使 Git 能够在不区分大小写的文件系统上更好地工作,例如 APFS、HFS+、FAT、NTFS 等。例如,如果目录列表在 Git 需要“Makefile”时找到“makefile”,则 Git会假设它确实是同一个文件,并继续将其记住为“Makefile”。

\n

\xe2\x80\xa6

\n

Git 依赖于您的操作系统和文件系统对此变量的正确配置。修改此值可能会导致意外行为。

\n
\n

正确的值true在 macOS 上,除非您专门将磁盘或分区格式化为区分大小写。所以你永远不应该改变这个值,除非 Git 选择的值不正确。例如,如果将存储库从不区分大小写的卷复制到区分大小写的卷,则该值将不正确,因为 Git 在使用git clone或创建存储库后不会探测该值git init

\n

I\xe2\x80\x99m 不确定您希望通过将此变量设置为 来实现什么false,但实际发生的唯一事情是 Git 无法正常工作。

\n
\n

请注意,根据我的测试,如果您指定大小写错误的分支,Git 将无法在不区分大小写的文件系统上获得正确的分支名称。如果您愿意,您可以将其称为 Git 中的错误,但从经验来看,在不区分大小写的文件系统上获得良好的行为可能很困难。

\n