全部 / 工具 / 技术 · 2021年10月31日 0

文件大小写引发的问题

在 Jenkins 构建一个之前的前端项目突然就报错了:

由于更改的代码太多具体改的什么我也忘记了,只能看看 Jenkins 构建留下的日志:

意思应该是:没有找到 Ruler 组件。可是我看了一下代码仓库中的文件还在:

确实之前改了 Ruler 组件,但是为什么说找不到呢?
我回忆了一下,除了更改 Ruler 内部的代码,为了与其他组件命名一致,还把它文件名从小写改为了大写,可是代码仓库里还是小写的 ruler.vue,再看一下仓库里对应的时间不是我本次提交的时间。git 怎么没有把我改为大写的 Ruler 更新掉呢?
经过一番搜索,了解到 git 项目有相关的配置,我特地初始化了一个空的 git 仓库,进入 .git 目录:

打开 config 文件:

可以看出 git 默认是忽略大小写的,那我把它改为 false 岂不是就行了。改完后把代码推到仓库却看到两个文件:

然后我又看了下文档:

看来官方还是不推荐直接改 ignorecase 的默认值,那我们该如何使文件大小写更改能被 git 识别呢?答案是通过 git mv 命令:git-mv – Move or rename a file, a directory, or a symlink

git mv [-v] [-f] [-n] [-k] <source> <destination> 
git mv [-v] [-f] [-n] [-k] <source> ... <destination directory>


也就是:

git mv ruler.vue Ruler.vue


这样之后在通过正常的 git 提交代码就行了。虽然问题解决了,但是我没有找到更好的规避方法,下次可能还会直接修改文件名而不是通过 git 命令,若有什么更好的方法,请留言!