除了文件名CompleteController.cs
c大写之外,每次更改都被完美推送,但在我的git repo中,它以小写字母显示CompleteController.cs
c。
答案 0 :(得分:1)
您可能在Windows上,因此您的文件系统不区分大小写。因此,您不能相信您在文件系统上看到的情况。
要解决此问题,您可以尝试
git mv -f <name-on-your-filesystem> <name_with_the_correct_case>
所以,如果我清楚地理解,它应该是
git mv -f COMPLETECONTROLLER.cs CompleteController.cs
答案 1 :(得分:-1)
Git有一个配置设置,告诉它是区分大小写还是不区分大小写:core.ignorecase
。要告诉Git区分大小写,只需将此设置设置为false
:
git config core.ignorecase false
core.ignorecase
如果为true,则此选项启用各种变通方法,以使git能够更好地处理不区分大小写的文件系统,如FAT。例如,如果目录列表在git期望
makefile
时找到Makefile
,则git将假定它实际上是同一个文件,并继续将其记住为Makefile
。默认值为false,除了git-clone(1)或git-init(1)将在创建存储库时探测并设置
core.ignorecase
为真。
将文件重命名恢复为原始名称,然后使用git mv
功能将该功能“移动”为“新”名称。
ls -la // display: Completecontroller.cs
git mv Completecontroller.cs CompleteController.cs
git status
// Now you should see the renamed file as renamed and not as unchanged.
原因是不跟踪文件而是内容。 Git不关心文件的名称是什么,它从没有名称的内容中计算SHA-1,而名称保存在其他地方(在* .idx文件中而不在包文件中)。
如上所述,git不会存储包含内容的文件名。查看附加图像,粉红色部分存储内容,而蓝色部分是内容的“元数据”,因此为了重命名文件,您必须告知 git将其重命名为内部存储蓝色部分)