Windows中Git对文件名大小写不敏感的问题解决方法


前言

Git是一个免费的、开源的分布式版本控制系统,可以高速处理从小型到大型的各种项目
版本控制:是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统
git

– 集中式版本控制工具:如CVS、SVN等,都有一个单一的几种管理服务器,保存所有文件的修订版本,而协同工作的人通过客户端连接到这台服务器,从而取出最新的文件或者提交更新。缺点:中央服务器的单点故障;多(程序员)对一(中央服务器)
– 分布式版本控制工具:如git,客户端取的不是最新的文件快照,而是把代码仓库完整的镜像下来到本地库(克隆/备份)


一、Git 对文件名大小写不敏感

默认情况下,在windows系统中,git不区分文件名大小写(linux系统会区分),所以如果开发环境是windows系统的话,当我们修改文件名大小写时,git无法识别出文件的变化,导致仓库和本地环境的文件名不一致。

查看本地状态:git status

方法1.使用git命令进行修改

git mv -f [你想要删掉的文件] [你想要留下的文件] 
git mv -f a.c A.c

等同于: 
git rm a.c 
git add A.c

将文件从一个目录移动到另一个目录
git mv test-dir TEST-DIR

如果是重命名文件夹,由于 Windows 下对文件夹的大小写也不敏感(-_-),所以直接使用上面的方法会失败:
# Rename from 'test-dir' to 'Test-dir/test-dir' failed.

解决方法,需要找个中间名
git mv test-dir tmp
git mv tmp TEST-DIR

方法2.关闭git 忽略大小写配置 (可以当前项目设置,也可以全局设置 --global)

执行 git config --get core.ignorecase 查看当前配置,不出意外,返回true

执行 git config core.ignorecase false 修改配置,关闭 git 忽略大小写配置

# 全局配置
git --global config core.ignoreCase false

注意:如果你修改文件目录的名字后,再执行方式二,会出现新的问题。
我们建议用方式一修改目录后,再执行方式二。或者,我们执行方式二后,再随便修改目录。

二、新的问题(重复的目录)

假设我们将原来的 UDS目录修改 uds 目录,则仓库会出现以下两种现象:

现象一:当关闭git 忽略大小写配置后,我们将修改push到远程仓库。这时会出现一个新的问题:UDS目录和 uds目录会同时存在 github 远程仓库里面。

现象二:clone和pull下来的文件却只有 uds目录。

原因分析

现象一原因:github 远程仓库对大小写敏感,可以区分 UDS目录 和 uds

现象二原因:在仓库克隆或初始化时,根据当前系统来设置是否忽略大小写。因此, UDS目录 和 uds目录会冲突,UDS目录里面的内容被覆盖。

解决方法

到 github 远程仓库里面手动删掉

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诊断协议那些事儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值