由于大小写敏感性,无法将文件添加到git的暂存区

3

我有一份文件列表,这些文件在我的工作副本中已经发生了变化,但是这些文件仍然停留在未暂存区域。我使用的是SourceTree,每次我将这些文件拖放到暂存区域时,它们似乎都不会移动!

我尝试过使用:

git add -A

但是我没有运气,之后如果我执行git status,文件仍然保留在未暂存的区域。

有趣的是,我在系统上进行了干净的克隆到另一个文件夹中,文件自动显示为已更改!

运行git status显示:

git status --short
 M resources/file1
 M Resources/file1
 M resources/file2
 M Resources/file2

代码相关内容翻译:存储库的顶层文件夹中是否有 .gitignore 文件? - Eris
尝试运行git clean -f命令,然后将文件添加到暂存区,以查看是否有效。 - Edgar
git status --short 的输出是什么? - michas
git clean -f 没有起作用,git status --short 显示修改的文件出现了两次!resources/file1、Resources/file1、resources/file2、Resources/file2。 - alph
1
看到 "Resources/file1" 和 "resources/file1" 两者都出现了,强烈表明存在大小写敏感的问题 - 参见 @edgar 的回答。 - gcbenison
显示剩余2条评论
1个回答

3
看起来你已经更改了一些已被git跟踪的文件的路径,而git并不喜欢这样做,或者你或者有权访问你的repo的某个人搞乱了git配置中的ignorecase标志。
尝试在你的仓库根目录下运行以下命令,并查看输出结果:
cat .git/config | grep "ignorecase"
默认情况下,它是false的,但可以更改为对大小写不敏感的系统设置为true。 从文档中我认为除了你之外没有人能够更改已克隆的工作副本的标志,但在执行新克隆时,该标志可能会被设置为true。
尝试查看你的干净克隆是否输出与ignorecase标志相同的值,以及它是否具有正确的文件夹名称(大写),如果是,则尝试将旧工作副本中的更改应用于此工作副本,以便你可以从那里开始工作,我曾经在移动文件/文件夹或重命名它们时在git中遇到过不稳定的行为。

或许更为极端的解决方案是,进行一个愚蠢的提交,将文件夹重命名为其他名称,并对文件夹名称进行较大的更改,而不仅仅是大小写字母的变化,然后再进行另一个提交,将原始名称还原,但这次要将首字母大写。

通知您的仓库中的其他用户,他们可能也需要执行干净的克隆操作,以避免出现问题。


我不得不将我的更改复制到新的克隆中,但补丁无法工作,所以我不得不手动完成,但它成功了。谢谢! - alph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接