我通过将第一个字母去大写来更改了一些文件名,如name.jpg中的name.jpg。Git无法识别这些更改,我不得不删除这些文件并再次上传。在检查文件名的更改时,Git是否可以区分大小写?我没有对文件本身进行任何更改。
当前回答
我们可以使用gitmv命令。例如,如果我们将文件abcDEF.js重命名为abcDEF.js,那么我们可以从终端运行以下命令
git mv -f .\abcDEF.js .\abcdef.js
其他回答
与@Sijmen的答案类似,这是我在OSX上重命名目录时的工作原理(灵感来自另一篇文章的答案):
git mv CSS CSS2
git mv CSS2 css
简单地执行git-mv-CSS CSS会产生无效参数错误:致命:重命名“/static/CSS”失败:无效参数可能是因为OSX的文件系统不区分大小写
p.s BTW如果您使用的是Django,collectstatic也无法识别大小写差异,您必须在静态根目录中手动执行上述操作
当你做了很多文件重命名,其中一些只是改变了大小写,很难记住是哪一个。手动“git移动”文件可能需要一些工作。因此,在文件名更改任务期间,我要做的是:
将所有非git文件和文件夹删除到不同的文件夹/存储库。提交当前的空git文件夹(这将显示为所有文件已删除。)将所有文件添加回原始git文件夹/存储库。提交当前非空的git文件夹。
这将解决所有的案例问题,而不需要找出您重命名的文件或文件夹。
若并没有工作,使用git-rm文件名从磁盘中删除文件并将其添加回。
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
我从其他答案中尝试了以下解决方案,但没有奏效:
git-mv文件名git rm-f文件名
如果您的存储库是远程托管的(GitHub、GitLab、BitBucket),您可以在源站(GitHub.com)上重命名文件,并强制以自顶向下的方式重命名文件。
以下说明适用于GitHub,但其背后的一般思想应适用于任何远程存储库托管平台。请记住,您尝试重命名的文件类型很重要,也就是说,它是GitHub认为在浏览器中可编辑(代码、文本等)还是不可编辑(图像、二进制等)的文件类型。
访问GitHub.com导航到GitHub.com上的存储库并选择您所在的分支使用站点的文件导航工具,导航到要重命名的文件GitHub允许您在浏览器中编辑文件吗?a.)可编辑单击“编辑此文件”图标(看起来像铅笔)更改文件名文本输入中的文件名b.)不可编辑在新选项卡中打开“下载”按钮,并将文件保存到计算机重命名下载的文件在GitHub.com上的上一个选项卡中,单击“删除此文件”图标(看起来像垃圾桶)确保选中“Commit directly to the branchname branch”单选按钮,然后单击“Commit changes”按钮在GitHub.com的同一目录中,单击“上载文件”按钮从计算机上载重命名的文件确保选中“Commit directly to the branchname branch”单选按钮,然后单击“Commit changes”按钮本地,签出/提取/拉动分支多恩