Git/Windows -签出分支(以及拉出/合并分支)时的大小写敏感问题.受影响的文件在Windows资源管理器中都是



git和Windows有一个非常奇怪的大小写敏感问题。

我不是git的大师,但我也不是初学者。我只是想把它扔出去。

我面临的问题:

  • 克隆存储库(不指定分支,只获取远程源主机上的内容)

  • 签出现有的开发分支(我们叫它DEV)

  • 一些文件现在都是小写

    。两个分支对这些文件

    有相同的大小写b。受影响的文件似乎是包含两个分支之间内容差异的文件

    c。并非所有文件都受影响

其他说明:

  • 使用Windows系统(不区分大小写)

  • git配置文件定义ignorecase = true

    。尝试切换到false,但未能消除此问题

  • 尝试在每个分支上运行ls-tree,两者都显示文件具有相同的大小写(不全是小写)

  • 当切换到Dev分支并返回到master分支时,受影响的文件名保持小写

  • 直接克隆Dev分支就可以了. 不会产生以下小写文件名

我已经尝试了很多方法来解决这个问题,尽管到目前为止还没有解决方案。

有人知道这里可能发生了什么吗?关于这个问题,我没有找到多少支持。

这个问题看起来是相关的(但没有答案):

切换GIT分支随机改变文件名大小写

感谢

也许有人能确切地知道发生了什么和为什么,但我担心大多数回答这个问题的经验丰富的人会提供一些"如果疼,就不要这样做"的东西。

例如,torek在评论中建议使用Linux系统。Torek是stackoverflow上最有经验的人之一,如果他们没有给你一个答案,那么很可能它不会到来。

如果你不想要一个Linux系统,另一个选择是将所有文件的大小写都更改为相同的(例如全部小写)。

由于这个原因,人们经常建议人们不要在文件名中混合大小写。我个人更喜欢全小写。

在Windows下启用文件夹区分大小写。(NTFS自2018年4月起具有此功能。)

fsutil file setCaseSensitiveInfo <folder> enable

见https://learn.microsoft.com/en-us/windows/wsl/case-sensitivity

查找git repo中Windows不区分大小写的重复目录路径

以管理员身份打开Powershell

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

(重启机器)

以管理员身份打开Powershell

cd drive:yourrootfolder
(Get-ChildItem -Recurse -Directory).FullName | ForEach-Object {fsutil.exe file setCaseSensitiveInfo $_ enable}

打开git Bash

cd /drive/your/root/folder
find * -type d | uniq -di

最新更新