Git/Windows - 签出分支(以及拉取/合并分支)时存在区分大小写的问题。受影响的文件在 Windows 资源管理器中均为小写

问题描述 投票:0回答:4

git 和 Windows 在区分大小写方面存在一个非常奇怪的问题。

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

我面临的问题:

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

  • 签出现有的开发分支(我们称之为DEV)

  • 许多文件现在都是小写的

    a.两个分支对于这些文件具有相同的大小写

    b.受影响的文件似乎是两个分支之间包含内容差异的文件

    c.并非所有文件都会受到影响

补充说明:

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

  • git 配置文件定义ignorecase = true

    a.尝试切换为 false,并没有消除这个问题

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

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

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

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

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

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

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

谢谢

windows git lowercase casing
4个回答
0
投票

可能有人能够准确地弄清楚发生了什么以及为什么,但是我担心大多数回答这个问题的有经验的人都会提供类似“如果疼痛,就不要这样做”的内容。

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

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

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


0
投票

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

fsutil file setCaseSensitiveInfo <folder> enable

请参阅 https://learn.microsoft.com/en-us/windows/wsl/case-sensitivity


0
投票

在 git 存储库中查找 Windows 不区分大小写的重复目录路径

以管理员身份打开 Powershell

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

(需要重启机器)

以管理员身份打开 Powershell

cd drive:\your\root\folder

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

打开 git Bash

cd /drive/your/root/folder

find * -type d | uniq -di

0
投票

可以在 Windows 上工作,无需管理权限,只需克隆 git 项目,然后在 MobaXterm(或您喜欢的 shell)中使用:

mkdir caseSensitiveSubTree
fsutil.exe file setCaseSensitiveInfo caseSensitiveSubTree
cd caseSensitiveSubTree
git clone ssh://git@gitlab/inserGitAccount/myProject.git
mv myProject ..
cd ..
rmdir caseSensitiveSubTree
cd myProject

然后就可以工作了,git在不区分大小写的文件夹中。我在 Windows 10 上测试过。

© www.soinside.com 2019 - 2024. All rights reserved.