当前位置:   article > 正文

【Github】玩转Github系列之二——使用git时涉及的文件名大小写不敏感问题_git 不忽略大小写

git 不忽略大小写

问题描述

由于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'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

git对文件名的大小写不敏感

该问题,有两个解决方案。

  • 使用git的重命名操作,而非Windows文件系统的重命名操作
git mv OldFileName newfilename
  • 1
  • 配置git对文件名敏感
git config core.ignorecase false
  • 1

Windows对文件名大小写不敏感

这里仅以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

  • fsutil命令开启大小写敏感:
    fsutil.exe file SetCaseSensitiveInfo C:\Users\qxhgd\GitProject enable #假定需要操作C:\Users\qxhgd\GitProject目录

注意,该命令仅以目录为操作的最小粒度。

本文涉及命令汇总

  • git配置大小写
    • 命令方式:
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参数的值
  • 1
  • 2
  • 3
  • 4
  • 5

– 配置文件方式,修改.gitconfig:

[core]
    ignorecase = false
  • 1
  • 2
  • git配置忽略文件权限修改
git config --global core.filemode false
  • 1
  • git重命名文件
git mv oldfile(旧文件名) newfile(新文件名)
  • 1
  • win10配置大小写-使用fsutil命令:
fsutil.exe file SetCaseSensitiveInfo C:\Users\qxhgd\GitProject enable #打开文件名区分大小写
fsutil.exe file SetCaseSensitiveInfo C:\Users\qxhgd\GitProject disable #关闭文件名区分大小写
  • 1
  • 2
  • fsutil命令其他参数:
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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

参考资料

如本文对你有些许帮助,欢迎大佬打赏:
支付宝及微信打赏方式

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/906459
推荐阅读
相关标签
  

闽ICP备14008679号