强制将本地文件带到远程git

时间:2015-05-29 14:28:59

标签: git github

除了文件名CompleteController.cs c大写之外,每次更改都被完美推送,但在我的git repo中,它以小写字母显示CompleteController.cs c。

2 个答案:

答案 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

文档

来自git config documentation

  

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下重命名文件?

原因是跟踪文件而是内容。 Git不关心文件的名称是什么,它从没有名称的内容中计算SHA-1,而名称保存在其他地方(在* .idx文件中而不在包文件中)。

如何在git下重命名文件?

如上所述,git不会存储包含内容的文件名。查看附加图像,粉红色部分存储内容,而蓝色部分是内容的“元数据”,因此为了重命名文件,您必须告知 git将其重命名为内部存储蓝色部分)

enter image description here