一尘不染

如何在 Git 中提交仅区分大小写的文件名更改?

javascript

我已经通过取消首字母大写更改了一些文件名,Name.jpgname.jpg. Git 无法识别这些更改,我不得不删除这些文件并再次上传它们。Git 在检查文件名更改时是否可以区分大小写?我没有对文件本身进行任何更改。


阅读 210

收藏
2022-02-17

共2个答案

一尘不染

Git 有一个配置设置,告诉它是否需要区分大小写或不区分大小写的文件系统:core.ignorecase. 要告诉 Git 区分大小写,只需将此设置设置为false. (如果您已经推送了文件,请小心,那么您应该首先在给出其他答案的情况下移动它们)。

git config core.ignorecase false

请注意,在不区分大小写的文件系统上将此选项设置为 false 通常是个坏主意。这样做会导致奇怪的错误。例如,以仅更改字母大小写的方式重命名文件将导致 git 报告虚假冲突或创建重复文件(来自 Mark Amery 的评论)。

文档

git config文档中:

core.ignorecase

如果为 true,则此选项启用各种解决方法,以使 git 在不区分大小写的文件系统(如 FAT)上更好地工作。例如,如果makefile在 git 期望的时候找到了一个目录列表Makefile,git 将假定它确实是同一个文件,并继续将它记住为Makefile.

默认值为 false,除了git-clone(1)git-init(1)将在创建存储库时进行探测并core.ignorecase在适当的情况下设置为 true。

不区分大小写的文件系统

我所知道的两个最流行的具有不区分大小写文件系统的操作系统是

  • Windows
  • OS X
2022-02-17
一尘不染

只要您只是重命名文件而不是文件夹,您就可以使用git mv

git mv -f yOuRfIlEnAmE yourfilename

(作为Git 2.0.1的更改-f,上面标志是多余的,但在较旧的 Git 版本中需要它。)

2022-02-17