git版本:
问题场景:
git/windows、mac对文件名称大小写不敏感,但Jenkins(linux)对大小写敏感因此编译会报错,如:
实际原因是由于该文件的【List】单词【i】字符写成了大写【LIst】
而在引入该文件的位置又正常使用小写
由于git/windows、mac对文件名称大小写不敏感,因此导致本机运行和打包都正常,Jenkins却报错。
要解决这个问题不要直接修改文件名!不要直接修改文件名!不要直接修改文件名! 否则git将无法正确识别且跟踪该文件的修改,还会引发别的报错,例如git status查看状态将提示工作树是干净的、git stash无法暂存工作区内容等。
如果你已经这么干了,那么恭喜你刷到这篇文章。
此时需要如下命令设置为false才可正常提交改动到远端仓库(true表示忽略大小写,默认为true)
git config core.ignorecase false
查看是否忽略大小写配置:
git config --get core.ignorecase
上面步骤完成后即可正常推送代码到远端分支,但会引发新的问题。
如将无法切换分支,报错提示如下:
解决办法是一定要将忽略大小写改为默认设置true,然后就可以正常切换分支了
git config core.ignorecase true
git checkout your_branch
另一种方式(推荐):
使用git mv命令来移动和重命名文件,语法如下
git mv 旧文件路径和文件名 新文件路径和文件名
例如:
git mv .\src\views\A.vue .\src\pages\B.vue
命令操作完成后再将旧文件删除,随后进行一次提交,最后再将刚才移动的文件移回原目录
原理为先将旧文件移动到别的目录下(拷贝一份记录),再将旧文件删除,然后提交一次代码使git更新当前跟踪的文件,之后将拷贝的记录文件移动到原目录进行提交,此时git跟踪的文件缓存也被更新,可以正常切换分支等操作。请注意此方法无需设置大小写不敏感,如果有执行过 git config core.ignorecase false 命令,请将它还原为true,否则依旧会出现无法正常切换分支的问题。
更粗暴的方式:
直接将旧文件拷出来,然后删除旧文件提交一次,再把刚才拷贝的文件放进来再提交一次。这种方式会将新文件识别为新创建文件,如果这份代码里面有锅你都得接住(代码修改记录变成了当前提交人)