前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git大小写不敏感问题避免,Jenkins代码构建失败踩坑记录

Git大小写不敏感问题避免,Jenkins代码构建失败踩坑记录

作者头像
德顺
发布2022-01-27 08:05:20
1.3K0
发布2022-01-27 08:05:20
举报
文章被收录于专栏:前端资源

前几天同事遇到一个问题,代码修改完本地可以运行,提交到 gitlab ,Jenkins 构建失败,报错找不到文件(图片)。

然后改了半天的路径和引入方式:require import @/ 相对路径 都试了,还是构建失败。

最后发现本地图片文件名是大写,gitlab 上面是小写,所以导致 Jenkins 构建失败。

这就涉及到 Git 大小写敏感的问题了,简单梳理一下逻辑:

  1. 张三编写组件 button.tsx,提交代码
  2. 张三觉得组件命名不妥,改为 Button.tsx
  3. 张三并修改所有文件对它的引用,本地环境运行正常,提交代码
  4. 构建服务器通过 Git 拉取代码,进行构建,Git 未认识到 button.tsx 大小写发生变化, Jenkins 构建找不到  Button.tsx 文件,所有引用 Button.tsx 的组件发生报错,构建失败。

解决方法

解决 Git 文件名大小写不敏感的方法有多种:

1、改成别的名再改回去:

代码语言:javascript
复制
# 修改文件名 button.tsx => b.tsx
git add .
git commit -m "修改文件名"
# 再改回来 b.tsx => Button.tsx
git add .
git commit -m "修回文件名"

2、使用 git mv 命令

代码语言:javascript
复制
git mv button.tsx Button.tsx

不过需要注意:

如果 a.tsx 文件,在本地右键改成 A.tsx,git 是不识别有修改的。 如果 a.tsx 改成 b.tsx,git 是操作是删除 a.tsx,新增 b.tsx,会导致之前的提交记录全部丢失。 正确做法,也就是第 2 种方法,使用 git 重命名,这样 a.tsx 的修改记录会跟过来 b.tsx 。

文件夹的修改:

不过修改文件夹时会出现一些问题:

代码语言:javascript
复制
git mv dir Dir

可能会报错:

代码语言:javascript
复制
fatal: renaming 'dir' failed: Invalid argument

可以使用下边这个笨办法修改:

代码语言:javascript
复制
git mv dir DirTemp
git mv DirTemp Dir

为什么 git 默认不区分文件夹大小写

可能是为了兼容 Windows 和 macOS。因为 Windows 和 macOS 系统文件名不区分大小写,Linux 区分大小写。

预防方案

Git 默认是忽略大小写的,如果改成不忽略大小写是不就可以了?

更改为不忽略大小写

代码语言:javascript
复制
[core]
  ignorecase = false

不过,这样可能会产生更麻烦的问题:

修改文件名时,Git 工作区中一下子增加了两个文件,并且无法删除 git rm 删除文件时,工作区的两个文件都被删除

未经允许不得转载:w3h5 » Git大小写不敏感问题避免,Jenkins代码构建失败踩坑记录

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决方法
  • 预防方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档