我通过将第一个字母去大写来更改了一些文件名,如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-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”按钮本地,签出/提取/拉动分支多恩

有时临时更改Git的大小写敏感度是有用的。

方法#1-更改单个命令的大小写敏感性:

git-c core.ignorecase=true checkout mybranch,关闭单个checkout命令的区分大小写功能。或者更一般地:git-c core.ignorecase=<<true或false>><<command>>。(感谢VonC在评论中提出了这一点。)

方法#2-更改多个命令的大小写敏感性:

要更改设置更长时间(例如,如果在更改回之前需要运行多个命令):

git-config-core.ignorecase(返回当前设置,例如false)。git-config-core.ignorecase<<true或false>>-设置所需的新设置。…运行多个其他命令。。。git-config-core.ignorecase<<false或true>>-将配置值设置回以前的设置。

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

git mv -f yOuRfIlEnAmE yourfilename

(在Git2.0.1中进行了修改,上面的咒语中的-f标志是多余的,但在较旧的Git版本中需要。)

这是我在OS X上所做的:

git mv File file.tmp
git mv file.tmp file

两个步骤,否则我会出现“文件存在”错误。也许可以通过添加缓存等一步到位。

我在MacOS上多次遇到过这个问题。Git区分大小写,但Mac只保留大小写。

有人提交了一个文件:Foobar.java,几天后决定将其重命名为Foobar.java。当你拉最新的代码时,它失败了。以下未跟踪的工作树文件将被签出覆盖。。。

我所看到的解决这一问题的唯一可靠方法是:

git rm Foobar.java用一条不能错过gitcommit-m'TEMP Commit!!'的消息提交它拉这将弹出一个冲突,迫使您合并冲突-因为您的更改删除了它,但另一个更改重命名了它(因此出现了问题)接受您的更改,即“删除”git rebase—继续现在放下你的解决方法gitrebase-i HEAD~2,放下TEMP COMMIT!!确认文件现在名为FooBar.java