【问题标题】:Take local file to remote git forcefully将本地文件强行带到远程 git
【发布时间】:2015-08-12 11:24:03
【问题描述】:

除了我的文件名CompleteController.csc 为大写外,所有更改都被完美推送,但在我的git repo 中,它显示CompleteController.csc 为小写。

【问题讨论】:

  • 我建议在本地删除该文件并检查它是否可以快速修复。如果不是...您需要在本地手动重命名它。

标签: git github


【解决方案1】:

您可能使用的是 Windows,因此您的文件系统不区分大小写。因此,您不能相信您在文件系统上看到的案例。

要修复它,您可以尝试

git mv -f <name-on-your-filesystem> <name_with_the_correct_case>

所以如果我理解清楚的话,应该是

git mv -f COMPLETECONTROLLER.cs CompleteController.cs

【讨论】:

  • 明确地说,NTFS 就是你想要的:Win32 选择保留大小写。它不是完全不区分大小写的。
【解决方案2】:

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 为 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 下的文件?

原因是跟踪文件而是内容。 Git 不在乎文件的名称是什么,它根据没有名称的内容计算 SHA-1,并将名称保留在其他位置(在 *.idx 文件中而不是在包文件中)。

git下如何重命名文件?

如上所述,git 不会将文件名与内容一起存储。看附图,粉色部分存储内容,而蓝色部分是内容的“元数据”,所以为了重命名文件,你必须告诉 git在其内部存储中重命名它蓝色部分)

【讨论】:

  • 小心; Git 的大小写不敏感取决于a specific configuration value,它通常由您的操作系统(以及随后的文件系统)管理。
  • 我不确定你在引用什么。如果“Git 区分大小写”。是您自己的文字,请勿将其呈现为引用。如果不是您自己的文字,请在您的答案中包含某种形式的归属。
  • 我的措辞不正确,默认 git 区分大小写,除非您设置了所需的配置值。修复了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 2016-05-07
  • 2013-06-30
  • 2014-09-06
相关资源
最近更新 更多