如何使git忽略大小写更改?


106

我不太确定这里发生了什么,但有时我的存储库中的特定文件会更改其名称的大小写。例如,:

之前: File.h

后: file.h

我并不在乎为什么会这样,但这会使git认为它是一个新文件,然后我必须去改回文件名。您可以让git忽略大小写更改吗?

[编辑] 我怀疑是Visual Studio对那个特定文件做了一些奇怪的事情,因为它似乎最经常发生在我打开并保存更改后。我没有任何方法可以修复VS中的错误,但是我希望git应该更有能力。


1
回复:Visual Studio以全小写形式保存文件您正在使用哪个版本的Visual Studio?最后我检查了一下,在2008版本中似乎更好。在2005年,该错误似乎是通过调试器而非解决方案资源管理器打开文件时发生的。
亚当·米兹

确实是2005年。虽然有一段时间没有升级的机会。
1800信息

Answers:


177

从1.5.6版ignorecase开始,以下[core]部分提供了一个选项.git/config

例如添加 ignorecase = true

要只更改一个仓库,请从该文件夹运行:

git config core.ignorecase true

全局更改:

git config --global core.ignorecase true

21
git config core.ignorecase true或git config --global core.ignorecase true全局应用。
亚伦·詹森

@graywh:它记录在混帐配置下core.ignorecase(kernel.org/pub/software/scm/git/docs/git-config.html
奔Lings

4
谢谢,我终于找到了为什么git没有考虑我的情况变化。ignorecase = false做到了,就被默认为true-_-
Alex C

15

您可以使用以下命令强制git以仅区分大小写的方式重命名文件:

git mv --cached name.txt NAME.TXT

请注意,这不会更改Windows分区上已签出副本中文件的大小写,但是git记录了大小写更改,您可以提交更改。以后的结帐将使用新的机壳。


1
“错误:未知选项'已缓存'。” 它也未在文档中列出:git-scm.com/docs/git-mv
Alex

12

在Windows的git版本1.6.1.9中,我发现默认情况下已在配置中设置了“ ignorecase = true”。


7
是的,使用Java文件时,您希望将此设置设置为false,否则在进行此类重构时可能会遇到麻烦(类HTMLParser变为HtmlParser或相反)。
PhiLho 2012年

与git版本2.10.1.windows.1相同-Kars
Barendrecht

3
我知道这很旧,但是在Windows上将ignorecase设置为false是没有意义的,因为Windows是不区分大小写的操作系统。无论您使用的是Java还是(gasp!)C#或其他任何工具,这都适用。
ingyhere

5

问题中描述的情况现在在Mac OS X中重新出现,git版本> = 1.7.4(我认为)。解决方法是手动设置您的ignorecase = false并将小写的文件(git以此方式更改,而不是Visual Studio)重命名为它们的UsualCase(即“ mv myname MyName”)。

更多信息在这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.