我的表达逻辑还是不太好,可能会讲的有点绕。
但是仔细看完肯定会有收获的!

之前实习的时候在写完代码上线部署的时候发现服务器 Build 的时候找不到依赖文件,但是在本地 Build 却正常,检查了半天本地明明没有问题,但是服务器上就是报路径错误,让我很是头疼。

最后在大佬帮助 Debug 后发现服务器上面有两个同名文件夹(大小写不同)。例如:ABCabc 两个文件夹,因为服务器是 Linux 系统,而 Linux 系统是区分大小写的,所以两个文件可以同时存在,但是在拉到本地之后,就合并成了一个文件夹 ABC (因为 Windows 和 macOS(默认) 以及 Git(默认) 是不区分大小写的),这个时候 abc 文件夹在本地是看不见的,合并到了 ABC 文件夹中。

因为本地 abc 文件夹中的所有文件都在 ABC 文件夹中,所以代码中所有的依赖路径都是 ../ABC/.. ,这个时候在本地跑是没有问题的。

但是在服务器上面,其实依赖的文件有一部分是存在 abc 中的。因为路径都是指向 ABC ,而 ABC 文件中并没有这些文件(文件在 abc 中),这个时候就会报路径错误。

这样的错误是如何产生的?

发生这样的问题我也是很好奇,于是我翻到了这个文件夹当时的 commit 记录,发现当时是两个人一起来开发一个任务,于是大家一起商量好的文件夹的名称,却因为没有规范名称的大小写所以出现了问题。

例如 A 创建了 ABC 然后代码里的依赖路径为 ../ABC/..,B 创建了 abc,依赖路径为 ../abc/..。因为上传到服务端之后文件夹都是会存在的,并不会合并,所以对于当时的情况来说,并不会发生路径错误。so,这个坑就这样产生了。

这个错误引发的问题

这个坑对于以后的开发人员来说就说一个很大的坑了,不,应该说是巨坑、天坑!

*这一段可能会很绕,仔细看:*因为代码再 pull 到本地之后,两个文件夹就会合并成一个,比如这个时候合并成了 ABC ,那么这个时候依赖 ../abc/.. 的功能就爆炸了,这个时候 Debug 就发现,咦,这里怎么会有依赖 ../abc/.. 的路径,怪不得会有问题,赶紧改成 ../ABC/..,嗯,这个时候代码 OK 了,可以跑起来了。**但是!**当代码再次 push 到了服务器上的时候,问题又来了,因为依赖 abc 文件夹的代码被改成了 ../ABC/.. 啊,但是文件其实还是在 abc 中的啊,所以服务器上的代码又爆炸了。

这个时候接手代码人的内心:wtf???让我死不好吗。

解决的方法

把服务器上的两个文件夹先删掉一个,然后重新上传一下代码,确保只有一个文件夹。

如何避免这样的问题:

  1. 确定好文件名的规范,比如使用驼峰,或者全部小写等等
  2. 两个分支同时创建文件夹的时候名字大小写不要搞错了,不然合并的时候就是两个文件夹

拓展

Git 为什么是默认不区分大小写?

其实根据上面的一些分析,我觉得有一定原因是为了兼容 Widnows 和 macOS 的,因为这两个系统默认是不区分大小写的。

即使 Git 支持了区分大小写,可以有两个大小写不同但是名称相同的文件夹,但是 Windows 和 macOS 不能显示,那岂不是很尴尬。

Mac 上文件名相同、大小写不同的文件夹会合并成一个所导致的问题相关推荐

  1. 合并文件夹内所有Excel文件(目前仅限于合并单层文件夹,如果文件夹下面有文件夹,暂未加入此功能,默认合并所有文件的所有Sheet)优化文件名_变更为:文件夹名字 + 合并的文件-(xls+xlsx)

    几经修改,终于算是成为自己较为满意的一个VBA程序(2020-6-6修正) 然,因个人才疏学浅,如有疏漏,希望各位前辈多多指正~在下先行谢过~ 1.考虑到Excel新建Sheet的命名规则 2.考虑到 ...

  2. Mac上如何查看没有权限的文件夹

    在Mac上我们可能会遇到有些文件夹右下角带有一个中间为白色减号的红色小圆标记,如下图: 这样的文件夹我们双击是无法打开查看那其内容的,并且会给出提示:"不能打开文件夹"文件夹名&q ...

  3. 查看文件_如何在Mac上显示和查看隐藏的文件/文件夹

    今天的文章推出的是如何在Mac上显示和查看隐藏的文件/文件夹.出于隐私或安全性考虑,出于多种原因,我们需要在Mac计算机上隐藏某些文件.这些文件或文件夹在默认情况下是为Mac的平稳运行而隐藏的,但是如 ...

  4. figma:使用mac上的字体 | 转换ttc字体文件

    figma:使用mac上的字体 | 转换ttc字体文件 现在的主力系统是Mac,偶尔会切到Windows,打开 figma 时发现缺少字体,原来里面有mac上才有的字体,之前都是切回mac重新编辑,但 ...

  5. win10显示隐藏文件_如何在Mac上显示和查看隐藏的文件/文件夹

    今天的文章推出的是如何在Mac上显示和查看隐藏的文件/文件夹.出于隐私或安全性考虑,出于多种原因,我们需要在Mac计算机上隐藏某些文件.这些文件或文件夹在默认情况下是为Mac的平稳运行而隐藏的,但是如 ...

  6. android 如何在电脑上查看手机内存储的文件夹 应用宝,【总结】Android安卓设备 连接Mac电脑—用 Android File Transfer软件...

    平时大家用到最多的就是安卓手机和苹果电脑互连,由于安卓系统应用广泛,很多平板电脑还有电视都在用安卓的系统,下面是我们整理的安卓连接MAC电脑的方法. 一.使用第三方的链接软件 现在很多第三方的应用软件 ...

  7. Crawler:反爬虫机制之基于urllib库+伪装浏览器+代理访问(代理地址随机选取)+实现下载某网址上所有的图片到指定文件夹

    Crawler:反爬虫机制之基于urllib库+伪装浏览器+代理访问(代理地址随机选取)+实现下载某网址上所有的图片到指定文件夹 导读 基于反爬虫机制之基于urllib库+伪装浏览器+代理访问(代理地 ...

  8. VB FTP操作类(可上传、下载、创建文件夹等等)

    可实现FTP上传下载,建文件夹等功能,从网上找了一个类,对其进行修改和功能补充,正常使用,非常方便. 切记在使用FtpFindFirstFile 函数查找相应的文件或文件夹后,要使用InternetC ...

  9. Colab 上使用shutil.copytree()复制整个文件夹到另一个文件夹

    Colab 上 使用 shutil.copytree() 方法 设置 dirs_exist_ok=True 执行代码提示 报错:TypeError:copytree() got an unexpect ...

最新文章

  1. 百度搜索结果图文标识规则分析
  2. 初中计算机word教案ppt,初中信息技术课件 用Word处理文字.ppt
  3. SpringSecurity 认证通过后显示当前认证用户名
  4. PostgreSQL 数据类型
  5. 文艺复兴?诺基亚再推翻盖手机 28天待机 仅售700元还带4G 真香就完事了!
  6. php微信自动登录,利用php怎么实现一个自动登录微信并获取昵称的功能
  7. Using C++ in Eclipse - Program file not Specified problem
  8. MEF程序设计指南四:使用MEF声明导出(Exports)与导入(Imports)
  9. 混淆矩阵 (Confusion Matrix)
  10. ODIN SNN处理器
  11. exls表格搜索快捷键_excel表格查找数据查找出来的-如何在一份Excel表格中进行快速查找,快捷键是?...
  12. 计算机网络——集线器和交换机
  13. 图像处理常用函数(Matlab)
  14. c++图的创建_如何在photoshop中创建汉堡菜单模板
  15. git分支主干同步命令
  16. java如何获取复选框选中的值
  17. Tycho build 3: 创建一个全局构建项目
  18. 局域网限速软件_复工复学活力加倍、办公类软件最低 6 折再来袭!
  19. UE4中使用第三方库Ⅱ
  20. powershell美化

热门文章

  1. “2019年全国职业院校技能大赛”高职组计算机网络应用竞赛竞赛样题E~J卷(软件定义网络部分答案参考)
  2. s_gets函数详解
  3. Windows XP系统的启动过程
  4. 斗罗大陆神界传奇:双人游中最强的团队;斗罗大陆神界传奇:双人游中最强团队的策略
  5. 粉尘对计算机影响,灰尘对电脑有影响_如何清理电脑灰尘 - 学无忧
  6. BT8:ActionNode及同步、异步
  7. 互联网日报 | 1月15日 星期五 | 百度App上线出行政策查询功能;铁路部门调整车票预售期为15天;知乎十周年宣布品牌升级...
  8. 为什么集合可以自动扩充_人工智能配色系列(二)智能扩充
  9. notch filter 点阻滤波器
  10. 如何用python爬取_如何使用python 抓取雪球网页