我通过将第一个字母去大写来更改了一些文件名,如name.jpg中的name.jpg。Git无法识别这些更改,我不得不删除这些文件并再次上传。在检查文件名的更改时,Git是否可以区分大小写?我没有对文件本身进行任何更改。
当前回答
修复整个repo上的git文件名大小写:
git rm -r --cached .
git add --all .
git status ##Review that **only** changes staged are renames
## Commit your changes after reviewing:
git commit -a -m "Fixing file name casing"
git push origin master
@Uriahs Victor评论解释:
此命令实际执行的操作是删除git认为仍然存在的文件/文件夹名称。所以它会清除缓存,但将所有内容保留在当前文件夹中您的本地更改),但它会发现其他错误情况文件夹/文件不再存在,因此将在git中显示为已删除地位然后你可以向上推github,它将删除错误案例的文件夹/文件。这个答案有一个图形描述命令的含义。
其他回答
Git有一个配置设置,告诉它是否需要区分大小写的文件系统:core.ignorecase。要让Git保持大小写稳定,只需将此设置设置为false。(如果您已经推送了文件,请务必小心,然后在给出其他答案后,应首先移动它们)。
git config core.ignorecase false
注意,在不区分大小写的文件系统上,将此选项设置为false通常是一个坏主意。这样做会导致奇怪的错误。例如,以仅更改字母大小写的方式重命名文件将导致git报告虚假冲突或创建重复文件(来自Mark Amery的评论)。
文档
从git-config文档中:
核心.ignorecase如果为true,则此选项启用各种变通方法,使git能够更好地处理不区分大小写的文件系统,如FAT。例如,如果一个目录列表在git期望makefile时找到了makefile,git将假设它实际上是同一个文件,并继续将其记为makefile。默认值为false,但gitclone(1)或gitinit(1)将在创建存储库时探测并将core.ignorecase设置为true(如果合适)。
不区分大小写的文件系统
据我所知,最流行的两种具有不区分大小写文件系统的操作系统是
窗户操作系统X
我们可以使用gitmv命令。例如,如果我们将文件abcDEF.js重命名为abcDEF.js,那么我们可以从终端运行以下命令
git mv -f .\abcDEF.js .\abcdef.js
如果您正在进行更复杂的更改,如目录名大小写更改,您可以在Linux机器上进行更改,因为Linux本身(以及Linux上的git)将名称相同但大小写不同的文件/目录视为完全不同的文件或目录。
因此,如果您在Windows上,您可以使用WSL安装Ubuntu,在那里克隆您的repo,使用VSCode打开克隆的repo目录(使用WSL远程扩展从Windows访问WSL Ubuntu),然后您将能够通过VSCode进行重命名,并使用VSCode git集成提交/推送它们。
Mac OSX High Sierra 10.13在一定程度上修复了这一问题。只需为git项目创建一个虚拟APFS分区,默认情况下它没有大小限制,也不占用空间。
在磁盘实用程序中,选择容器磁盘时单击+按钮在格式下选择APFS(区分大小写)命名为敏感利润可选:在Sensitive中创建一个名为git和ln-s/Volumes/Sensitive/git/Users/johndoe/git的文件夹
您的驱动器将位于/卷/敏感/
如何在Git中提交仅区分大小写的文件名更改?
因此,GitHub如何处理这种区分大小写的部署问题有很多解决方案。
在我的例子中,我已经将文件名的大小写约定从大写改为小写。
我相信git可以跟踪更改,但这个命令git-config-core.ignorecase false指示git如何在幕后操作
在我的例子中,我运行了命令,git突然有很多文件要跟踪,标记为未跟踪。
然后我点击gitadd,然后git提交并再次在netlify上运行我的构建。
然后可以跟踪现在显示的所有错误,例如找不到模块:无法解析“”/Components/ProductRightSide位于/opt/build/rebo/Components/products中,并已修复,以便git能够成功跟踪和实施更改。
这是一个很好的解决方法,也可以避免沮丧,但相信我,这肯定会奏效的。
PS:解决问题后,您可能需要运行命令git-config-core.ignorecase true还原git如何区分大小写。
此外,请注意git-config-core.ignorecase-false与其他文件扩展名存在问题,因此您可能需要注意,如果您知道自己在做什么并且确信这一点,请执行此操作。
这是netlify上的一条线索,可能会有所帮助
推荐文章
- 如何预览git-pull?
- 如何删除git历史记录中的特定修订?
- 如何获得Git存储库中的Git存储库名称?
- 当git说它正在“解析delta”时,它实际上在做什么?
- Git命令将一个文件夹移动到另一个文件夹
- 在单个文件中重新启动/撤消冲突解决方案
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到