赞
踩
由于Linux文件名区分大小写,而Windows不区分,在平时开发过程中,就会遇到各种关于文件名大小写的问题,如下面两种场景:
1、git对文件名的大小写不敏感:
– 创建一个文件readme.md,提交到代码仓库;
– 接着在本地文件系统中将其修改为Readme.md;
– 接着去提交,发现代码没有变化,输入git status 也不显示任何信息。
2、Windows对文件名大小写不敏感:
– 在Windows上git clone Linux内核源码时,会因为Windows不区分文件名的大小写遇到类似下面的问题:
git clone git@github.com:qxhgd/Reading-and-comprehense-linux-Kernel-network-protocol-stack-4.19.157.git
Cloning into 'Reading-and-comprehense-linux-Kernel-network-protocol-stack-4.19.157'...
remote: Enumerating objects: 2198, done.
remote: Counting objects: 100% (2198/2198), done.
remote: Compressing objects: 100% (2081/2081), done.
remote: Total 2198 (delta 111), reused 2190 (delta 106), pack-reused 0
Receiving objects: 100% (2198/2198), 7.56 MiB | 322.00 KiB/s, done.
Resolving deltas: 100% (111/111), done.
warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:
'linux-net-kernel/net/netfilter/xt_DSCP.c'
'linux-net-kernel/net/netfilter/xt_dscp.c'
'linux-net-kernel/net/netfilter/xt_HL.c'
'linux-net-kernel/net/netfilter/xt_hl.c'
'linux-net-kernel/net/netfilter/xt_RATEEST.c'
'linux-net-kernel/net/netfilter/xt_rateest.c'
'linux-net-kernel/net/netfilter/xt_TCPMSS.c'
'linux-net-kernel/net/netfilter/xt_tcpmss.c'
该问题,有两个解决方案。
git mv OldFileName newfilename
git config core.ignorecase false
这里仅以Win10为例来说明,Win7系统可参考后文参考资料《how-do-you-make-windows-7-fully-case-sensitive-with-respect-to-the-filesystem》。
Windows 10 四月更新(1803)
安装有 Linux 子系统,即 Windows Subsystem for Linux(WSL)
所在分区为 NTFS 格式
以管理员权限运行 PowerShell
注意,该命令仅以目录为操作的最小粒度。
git config core.ignorecase false #git区分大小写
git config core.ignorecase true #git忽略大小写
git config --unset core.ignorecase #git忽略大小写
git config core.ignorecase #查看是否区分大小写
git config --list #查看core.ignorecase参数的值
– 配置文件方式,修改.gitconfig:
[core]
ignorecase = false
git config --global core.filemode false
git mv oldfile(旧文件名) newfile(新文件名)
fsutil.exe file SetCaseSensitiveInfo C:\Users\qxhgd\GitProject enable #打开文件名区分大小写
fsutil.exe file SetCaseSensitiveInfo C:\Users\qxhgd\GitProject disable #关闭文件名区分大小写
PS C:\Windows\system32> fsutil.exe
---- 支持的命令 ----
8dot3name 8dot3name 管理
behavior 控制文件系统行为
dax Dax 卷管理
dirty 管理卷更改位
file 文件特定命令
fsInfo 文件系统信息
hardlink 硬链接管理
objectID 对象 ID 管理
quota 配额管理
repair 自愈管理
reparsePoint 重分析点管理
storageReserve 存储保留管理
resource 事务性资源管理器管理
sparse 稀疏文件控制
tiering 存储分层属性管理
transaction 事务管理
usn USN 管理
volume 卷管理
wim 透明 wim 托管管理
PS C:\Windows\system32> fsutil.exe file help
---- 支持的 FILE 命令 ----
createNew 创建指定大小的新文件
findBySID 按安全标识符查找文件
layout 查询有关该文件的所有可用信息
optimizeMetadata 优化文件的元数据
queryAllocRanges 查询文件的分配范围
queryCaseSensitiveInfo 查询目录的大小写信息
queryExtents 查询文件的范围
queryExtentsAndRefCounts 查询文件的范围及其相应的引用计数
queryFileID 查询指定文件的文件 ID
queryFileNameById 显示文件 ID 的随机链接名称
queryOptimizeMetadata 查询文件的优化元数据状态
queryValidData 查询文件的有效数据长度
setCaseSensitiveInfo 设置目录的大小写信息
setShortName 设置文件的短名称
setValidData 设置文件的有效数据长度
setZeroData 设置文件的零数据
setEOF 为现有文件设置文件结尾
setStrictlySequential 将 ReFS SMR 文件设置为严格按顺序
PS C:\Windows\system32>
如本文对你有些许帮助,欢迎大佬打赏:
支付宝及微信打赏方式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。