如何让git忽略大小写的变化?

180*_*ION 93 windows git

我不太确定这里发生了什么,但有时我的存储库中的特定文件会改变它的名称.例如,:

之前: File.h

后: file.h

我真的不在乎为什么会发生这种情况,但这会导致git认为它是一个新文件,然后我必须重新更改文件名.你能不能让git忽略大小写的变化?

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

Mar*_*rkB 163

由于1.5.6版本有一个ignorecase在可用选项[core]的部分.git/config

例如,添加 ignorecase = true

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

git config core.ignorecase true
Run Code Online (Sandbox Code Playgroud)

要全局更改它:

git config --global core.ignorecase true
Run Code Online (Sandbox Code Playgroud)

  • git config core.ignorecase是true或git config --global core.ignorecase是全局应用的. (19认同)
  • 谢谢,我终于找到了为什么git没有考虑我的案例变化.`ignorecase = false`做了伎俩,默认为'true` -_- (4认同)

And*_*ott 12

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

git mv --cached name.txt NAME.TXT
Run Code Online (Sandbox Code Playgroud)

请注意,这不会更改Windows分区上签出副本中文件的大小写,但git会记录大小写更改,您可以提交更改.未来的结账将使用新的外壳.

  • “错误:未知选项‘已缓存’。” 它也没有在文档中列出:https://git-scm.com/docs/git-mv (5认同)

Joh*_*n C 11

在Windows的git版本1.6.1.9中,我发现默认情况下已经在config中设置了"ignorecase = true".

  • 是的,当您使用Java文件时,您希望将此设置设置为false,否则在进行此类重构时可能会遇到麻烦(类HTMLParser变为HtmlParser或反之). (5认同)
  • 这根本不是无意义的,因为我们是程序员,需要以某种方式命名文件。例如,对于 C#/Unity,找到文件中包含的类很重要。在一台计算机上重命名该文件并将其签入会以不透明的方式破坏其他计算机上的构建。我将ignoreCase=false 添加到强制性同事git 设置中! (4认同)
  • 我知道这是旧的,但是在Windows上将ignorecase设置为false是没有意义的,因为Windows是一个不区分大小写的操作系统.无论您是使用Java还是(喘气!)C#或其他任何东西,这都适用. (2认同)

Fox*_*loy 7

要强制 git 识别文件大小写的更改,可以运行此命令。

  1. 根据需要更改文件大小写
  2. git mv -f mynewapp.sln MyNewApp.sln

以前的命令现在似乎已被弃用。


aka*_*ppi 5

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

更多信息在这里