切换 GIT 分支随机更改文件名大小写

问题描述

我在使用 GIT 时遇到了一个奇怪的问题。

我有一个用于我正在处理的小项目的 git 存储库。没有遥控器,这只是我自己的工作。直到几天前,我的开发甚至还没有保证任何分支。

我终于需要为一些实验代码创建一个分支。完成后,我只需检出 master 分支即可返回到我所在的位置。这就是问题开始的地方。

有六个文件在新分支和主分支之间发生变化。每次我切换/签出任一分支(在两个分支之间切换)时,这六个文件名中的大部分都会更改大小写。

例如,如果文件应该是 someCode.py

  • 有时文件名会切换到 somecode.py(不正确)
  • 有时文件名会切换到 someCode.py(正确)

不管我选择哪个分支,每次结果都不一样。以及每次最终哪个文件与哪个 CaSe 不同。

一开始我怀疑我使用的 VSCode 的 GIT 插件(GIT Graph),但它也会发生在包含的 GIT GUI 中,甚至在我从命令行使用“git switch”时也会发生。

我了解了 core.ignorecase 设置;它被设置为 True。我尝试将其设置为 False,但问题仍然存在。

有人知道发生了什么吗? 谢谢

详情:

  • GIT 2.30.0.windows.2
  • Windows 10
  • 文件位于映射的网络驱动器上
  • 文件系统为 NTFS

解决方法

在本地,Git 区分大小写,因此您可以有两个不同的文件,分别命名为 filename.txtFileName.txt。在某些操作系统(例如 Linux)上运行良好,而在其他操作系统(Windows)上则不然。请注意,分支名称也是如此;您不能有两个不同的分支,仅在 Windows 上因大小写而异。这样做的原因是分支名称作为文件存储在您的驱动器上。

很可能您的问题是相关文件在两个分支上具有不同的名称,但仅因大小写而异。如果是这样,请选择您想要的(可能是 master),然后在另一个分支上重命名这些文件以完全匹配大小写。如果它们实际上应该是不同的文件,那么更改它们的名称而不仅仅是大小写。

另一种可能是,两个(或多个)名称因大小写不同而不同的文件只存在于同一个分支中,而切换分支只会导致问题暴露出来。请注意,它可能是文件本身,也可能是这些文件路径中的任何目录也可能具有不同的大小写。要确定这是否是问题所在,请导航到 Git Bash 中存储库的根目录并运行以下命令:

git ls-tree -r HEAD | grep -i [filename-without-path]

如果您看到两个或多个名称相同但大小写不同的文件,则您已确定问题所在。

,

看来我已经解决了这个问题——至少在一定程度上是这样。

我创建了一个新分支,在 Windows 资源管理器中手动修复了文件名。现在,在 master 和 newBranch 之间切换按预期执行。

但是,如果我从问题切换到 firstBranch,问题就会重新出现。该分支似乎存在问题,并且切换进和切换出该分支会导致该问题。

我仍然不知道为什么。

编辑:好吧,也许不是。 Repo 似乎在其他分支上又遇到了这个问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...