git不区分大小写吗?

JAk*_*Akk 87 git version-control case-sensitive

在我的部分调用的第一个承诺中,_Electronics它以大写字母开头,然后我将其更改为_electronics.

在提交新名称后,cygwin下的Git忽略了这个案例,所以我在目标仓库中手动更改了名称.

现在它有时会将_electronics提交的部分更改为_Electronics.

我做错了什么?

man*_*lds 100

它将取决于core.ignorecase配置值,在区分大小写的文件系统中设置为false,在Windows上的msysgit中设置为true.

core.ignorecase

如果为true,则此选项启用各种变通方法,以使git能够更好地处理不区分大小写的文件系统,如FAT.例如,如果目录列表在git需要"Makefile"时找到"makefile",git将假定它实际上是同一个文件,并继续将其记住为"Makefile".

默认值为false,但git-clone(1)或git-init(1)将在创建存储库时探测并设置core.ignorecase true(如果适用).

  • 这是正确的答案imo.对于将来我,使用`git config --unset-all core.ignorecase && git config --system core.ignorecase false` with sudo. (74认同)
  • @Znarkus,在OSX上执行此操作的问题是,当您通过finder重命名文件,并且只更改大小写时,git会将重命名的版本视为一个全新的文件,但它不会生成相应的"删除"旧版本文件的操作.因此,如果您提交并推送到github,github将同时拥有旧命名和新命名的文件,但您的本地系统将只拥有新文件,并且git将更加明智. (9认同)
  • @Znarkus 在 OS X 上,你的代码正是我所需要的。谢谢你! (2认同)
  • 与詹姆斯同上,@ Znarkus已经确定了OS X上此问题的修复程序,谢谢! (2认同)
  • @spiralganglion对于OSX上的web dev我真的可以推荐[创建区分大小写的分区](http://stackoverflow.com/a/9596248/138023),然后将其挂载为www目录. (2认同)

Ada*_*ruk 69

它将被视为两个不同的东西,但会导致您在非区分大小写的系统上出现问题.如果是这种情况,请确保选项卡填写任何路径或文件名.此外,要在这种情况下更改某些内容的名称,请执行以下操作:

mv file.txt temp.txt
git add -A
git commit -m "renaming..."
mv temp.txt File.txt
git add -A
git commit --amend -m "Renamed file.txt to File.txt"
Run Code Online (Sandbox Code Playgroud)

这是一种明确的方式,使更改提交它们,然后折叠提交.更简单的方法是操作索引和工作文件夹:

git mv file.txt temp.txt
git mv temp.txt File.txt
git commit -m "Renamed file.txt to File.txt"
Run Code Online (Sandbox Code Playgroud)

这与调整目录名称有关:git mv并且只更改目录的大小写


Arn*_*oud 22

这更容易:

git mv Electronics electronics -f
git commit -m "That was easy!"
Run Code Online (Sandbox Code Playgroud)

  • 您是否在不区分大小写的文件系统上尝试过此操作? (4认同)
  • @Edward是的,OS X. (2认同)
  • 我最初将其视为试图对文件夹而不是文件执行大小写更改重命名的原始海报。现在我重新阅读了这篇文章,不清楚。事实上,`mv -f` 可以用于文件。 (2认同)

Cem*_*emo 20

git config --system core.ignorecase false
Run Code Online (Sandbox Code Playgroud)