Git中将小写文件夹abc改为大写Abc遇问题及PSR-4报错求助
执行composer update时出现PSR-4自动加载报错:
Class Database\Seeders\Abc\DatabaseSeeder located in D:/Codes/PHP/Chinabing/httpdocs/database/seeders\abc\DatabaseSeeder.php does not comply with psr-4 autoloading standard. Skipping.
Class Database\Seeders\Abc\SomeSeeder located in D:/Codes/PHP/Chinabing/httpdocs/database/seeders\abc\SomeSeeder .php does not comply with psr-4 autoloading standard. Skipping.
推测原因是文件夹名称为小写abc,需将路径D:\web\myproject\database\seeders\abc改为D:\web\myproject\database\seeders\Abc。
已执行以下Git配置:
git config --global core.ignorecase false git config --local core.ignorecase false git config core.ignorecase false
但执行git mv abc Abc时出现错误提示:
Rename from 'database/seeders/abc' to 'database/seeders/Abc/abc' failed. Should I try again? (y/n)
操作后生成异常路径Abc/abc,需解决文件夹大小写重命名问题。
Windows文件系统默认不区分大小写,直接用git mv修改文件夹大小写容易出问题,试试以下两种可行方案:
方案一:临时迁移文件分步处理
- 把
abc文件夹内的所有内容移到项目外的临时目录(比如D:\temp\abc_backup),然后删除仓库内的原文件夹:git rm -r database/seeders/abc git commit -m "移除小写abc种子文件夹" - 在
database/seeders下新建Abc文件夹,将临时目录的内容移回该文件夹,再提交到Git:git add database/seeders/Abc git commit -m "添加正确大小写的Abc种子文件夹" - 刷新Composer自动加载规则:
composer dump-autoload
方案二:两次重命名绕开系统限制
通过临时名称过渡,让Git识别到文件夹的变更:
# 第一步:重命名为临时名称 git mv database/seeders/abc database/seeders/temp_abc git commit -m "临时重命名abc为temp_abc" # 第二步:重命名为目标大小写名称 git mv database/seeders/temp_abc database/seeders/Abc git commit -m "重命名temp_abc为Abc"
完成后执行composer update,即可验证PSR-4报错是否消失。
内容的提问来源于stack exchange,提问作者ronrun

