我正试着思考过去两天发生在我身上的几件事的原因。
我有这样的文件夹结构:
includes/bootstrap/Loader.php
这个Loader.php文件的命名空间应该如下所示:
App\Bootstrap
composer是为PSR4设置的,源目录为App,命名空间为App。
在我的Mac电脑上,我的代码在本地运行得很好,但是当上传到一个web服务器(Linux)时,所有的东西都坏了,它不停地吐出来,没有找到类。我的搜索告诉我,Linux是区分大小写的,所以我返回并将bootstrap文件夹更改为Bootstrap,这样新的结构就是includes/Bootstrap/Loader.php --在之后的生产中,一切都工作得很好。
现在一切都很好,我希望我的命名空间是这样的:
App\Bootstrap
我不希望我的名字空间是这样的:
App\bootstrap。
在将代码推到github之后,我意识到它降低了所有文件夹的名称!进一步的搜索将我引向这样一个事实:我必须运行it config core.ignorecase false,这样它才能尊重文件夹名的情况!
然后,我尝试在一个完全不同的目录和终端中删除回购程序,并向我展示了以下信息:

我可以看到,它同时显示在终端中,但在文件夹中,它是github...so上的实际版本,我只是想知道为什么它在终端中同时显示了这两个版本。
发布于 2021-10-04 00:09:21
通常,Linux文件系统是区分大小写的,所以如果您将文件称为App\Bootstrap,那么在文件系统中就需要这样做。所以是的,你的第一个问题。
Git的意思是“冲突”,您的存储库中有两组路径:一组从include/Bootstrap开始,一组从include/bootstrap开始。Git区分大小写,因此它对这些路径的处理方式不同。但是,Mac无法区分情况,所以当Git将两组路径写入文件系统时,只能成功地编写其中的一个路径。
至于设置core.ignoreCase,它被设置为反映您的文件系统实际能够并且不应该被更改的内容。问题不是Git:问题是您的文件系统根本无法处理这种情况。Git FAQ对此做了一些详细的解释。。
若要删除副本,请运行git rm -r --cached includes/bootstrap,然后提交。
您可能还希望将来使用区分大小写的文件系统,这是在APFS分区中格式化时的一个选项,尽管它不是macOS上的默认设置。请注意,有些程序不能很好地处理这个问题,并且在区分大小写的文件系统上运行时可能会导致问题。
https://stackoverflow.com/questions/69428875
复制相似问题