【发布时间】:2015-08-12 11:24:03
【问题描述】:
除了我的文件名CompleteController.csc 为大写外,所有更改都被完美推送,但在我的git repo 中,它显示CompleteController.csc 为小写。
【问题讨论】:
-
我建议在本地删除该文件并检查它是否可以快速修复。如果不是...您需要在本地手动重命名它。
除了我的文件名CompleteController.csc 为大写外,所有更改都被完美推送,但在我的git repo 中,它显示CompleteController.csc 为小写。
【问题讨论】:
您可能使用的是 Windows,因此您的文件系统不区分大小写。因此,您不能相信您在文件系统上看到的案例。
要修复它,您可以尝试
git mv -f <name-on-your-filesystem> <name_with_the_correct_case>
所以如果我理解清楚的话,应该是
git mv -f COMPLETECONTROLLER.cs CompleteController.cs
【讨论】:
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为 true。
重命名文件恢复为原始名称,然后使用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在其内部存储中重命名它蓝色部分)
【讨论】: