Git 文件名称大小写的天坑 | 您所在的位置:网站首页 › github仓库大小 › Git 文件名称大小写的天坑 |
前言
之前是知道 git 可以设置对文件名称大小写是否敏感的。但是一直没有遇到这方面的问题,直到前阵子搭建新项目时,为了规范 vue 组件的命名,需要对原本小写字母开头的文件修改为大写字母开头。遇到了这个让我头疼不已的大小写 bug。 现象假如现在有个小写字母开头的 vue 文件:small.vue 现在想要把其修改为:Small.vue 发现即使修改了名称,但是 git status 上是没有变化,这个时候我们打开一下 git 大小写敏感git config core.ignorecase false 在修改完的时候,首先在引入组件的地方因为名称的修改会出现红线报错 然后,网上找找资料,发现说只要把 vscode 删除了重新打开就可以了。 OK,重启 vscode ,发现真的好了!没错,它好了,但是又没有完全好。 好了,coding 完就可以提交代码了。提交的过程也很正常。 直到你发现 git 仓库中同时出现了大小写开头的文件 在删除小写字母开头文件时遇到的问题我当初想,只要把小写字母开头的文件删除了就行了。看起来是如此简单,但是又没有那么简单。 首先,我在改成大写字母的 git 分支上是看不到小写文件的,即使是命令行 ls 也是只有大写文件。然后就拉了一条新分支,终于有小写文件了,但是看不到大写文件了。 没关系,我们开始删除小写文件,尝试一下。删除以后 git status 一看,modify 的 delete 了两个文件,大写的和小写的,还没有办法单独删除小写文件。 正确的解法 较好的解法:执行git config --global core.ignorecase false,全局设置 大小写敏感 直接使用以下命令重命名文件,在 git 中不要直接修改文件名,最好的办法是使用下面的方式 git mv -f [你想要删掉的文件] [你想要留下的文件] git mv -f a.js A.js 等同于: git rm a.js git add A.js通过上述的方法一个一个文件替代。 暴力解法:先保存一份修改为大写的文件夹,删除 src push 到分支,然后把保存的文件重新 push 到分支。 当初不这么做的原因是在 master 已经提交了小写文件,需要在 master 上进行此操作,风险太大。 tips在小写文件修改为大写文件后,会发现修改大写文件,小写文件也会出现在 git 修改上。因为不区分大小写。 |
CopyRight 2018-2019 实验室设备网 版权所有 |