我不太确定这里发生了什么,但有时我的存储库中的特定文件会更改其名称的大小写。例如:
之前:
File.h
之后:
file.h
我不太关心为什么会发生这种情况,但这会导致 git 认为这是一个新文件,然后我必须去把文件名改回来。你能让 git 忽略大小写更改吗?
[编辑] 我怀疑 Visual Studio 对该特定文件做了一些奇怪的事情,因为当我在更改后打开并保存它时,这种情况似乎最常发生。然而,我没有任何方法来修复 VS 中的错误,但我希望 git 应该更有能力。
ignorecase
的 [core]
部分中提供了 .git/config
选项
例如添加
ignorecase = true
要仅更改一个存储库,请从该文件夹运行:
git config core.ignorecase true
要全局更改它:
git config --global core.ignorecase true
您可以使用以下命令强制 git 以仅区分大小写的方式重命名文件:
git mv --cached name.txt NAME.TXT
请注意,这不会更改 Windows 分区上签出副本中文件的大小写,但 git 会记录大小写更改,并且您可以提交该更改。未来结帐将使用新外壳。
在适用于 Windows 的 git 版本 1.6.1.9 中,我发现配置中的“ignorecase=true”已默认设置。
要强制 git 识别文件大小写的更改,可以运行此命令。
git mv -f mynewapp.sln MyNewApp.sln
之前的命令现在似乎已被弃用。
问题中描述的情况现在在 Mac OS X 上再次出现,git 版本 >= 1.7.4 (我认为)。解决方法是设置你的ignorecase = false并手动将小写文件(git以这种方式更改,而不是Visual Studio)重命名回它们的UsualCase(即'mv myname MyName')。
更多信息这里。
第 4 步解决了检查具有不同大小写的分支机构的问题。
可能的发现(截至 VS 2019 16.11.26):如果 SLN 文件中项目文件的路径与其他地方的情况不同,这也可能会触发该情况。 我们通过右键单击解决方案中的项目并选择“在文件资源管理器中打开文件夹”找到了这一点。 我们注意到文件资源管理器顶部的路径是 SLN 文件中的路径,而不是文件系统中的路径(如果您只是通过文件资源管理器自己打开此路径)。 因此,我们怀疑 SLN 中的此路径正在传递给某些 git 操作,而该路径的其他版本则在其他 git 操作时间传递。 或者说git操作没有得到core.ignorecase的喜爱。