乐趣区

记录一下 Git 对大小写文件名追踪判定的坑

3 分钟了解一下 Git 对大小写文件名追踪判定的坑
最近业务上,遇到一个关于 Git 对于大小写文件名变动的追踪判定的坑
所以这篇文章,记录一下 Git 如何判定文件大小写变化
前言
我们都知道 Linux 是严格区分大小写的,
所以如果 Mac 开发时不小心用文件名是 Order.vue,然后在 routes 配置时写的路径是 ../../../order.vue
在部署到 Linux 时肯定会报错。
问题不是很简单吗,修改下文件名就好了,有啥可说的?
这里就是文章要说的点了
直接修改文件名,会怎样?
就是如果你仅仅是把文件名从 Order.vue 修改为 order.vue 然后提交代码。
你如果执行 git status,会发现提示你没有变化。
git status

nothing to commit, working tree clean
实际上提交到代码仓库后,你会发现文件的大小写也没有变化。git 认为你没有什么变化,文件名依旧是 Order.vue
那如何触发文件名的变化呢?
我尝试了 2 种方法

1. 往 Order.vue 里加一句空行或者注释,触发一下这个文件名的变化
2. 修改 Order.vue 为 Order111.vue, 然后再把 Order111.vue 修改回 order.vue,触发一下这个文件名的变化

结果是都失败了 …
总结:如果仅仅是修改文件名的大小写的话,Git 不会判定文件名有变化
那最后怎么做呢?

1. 直接修改 route.js,就直接用大写 Order.vue 这个文件名作为路由,不变化文件名了
2. 先把文件名随便改为 test.vue 提交上去,再提交第二次把文件名改回来,比如改成 order.vue。这样肯定是能判定文件名的修改的

以上,就是在业务开发里遇到的一个小坑,小小的记录一下。

退出移动版