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

问题描述 投票:0回答:7

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

之前:

File.h

之后:

file.h

我不太关心为什么会发生这种情况,但这会导致 git 认为这是一个新文件,然后我必须去把文件名改回来。你能让 git 忽略大小写更改吗?

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

windows git
7个回答
247
投票

版本 1.5.6 起,

ignorecase
[core]
部分中提供了
.git/config
选项

例如添加

ignorecase = true

要仅更改一个存储库,请从该文件夹运行:

git config core.ignorecase true

要全局更改它:

git config --global core.ignorecase true

21
投票

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

git mv --cached name.txt NAME.TXT

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


15
投票

在适用于 Windows 的 git 版本 1.6.1.9 中,我发现配置中的“ignorecase=true”已默认设置。


8
投票

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

  1. 随意更改文件大小写
  2. git mv -f mynewapp.sln MyNewApp.sln

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


6
投票

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

更多信息这里


3
投票
  1. 从控制台:git config core.ignorecase true
  2. 更改文件名大小写
  3. 承诺
  4. 从控制台: git config core.ignorecase false

第 4 步解决了检查具有不同大小写的分支机构的问题。


0
投票

可能的发现(截至 VS 2019 16.11.26):如果 SLN 文件中项目文件的路径与其他地方的情况不同,这也可能会触发该情况。 我们通过右键单击解决方案中的项目并选择“在文件资源管理器中打开文件夹”找到了这一点。 我们注意到文件资源管理器顶部的路径是 SLN 文件中的路径,而不是文件系统中的路径(如果您只是通过文件资源管理器自己打开此路径)。 因此,我们怀疑 SLN 中的此路径正在传递给某些 git 操作,而该路径的其他版本则在其他 git 操作时间传递。 或者说git操作没有得到core.ignorecase的喜爱。

© www.soinside.com 2019 - 2024. All rights reserved.