Git如何删除文件名大小写不同的重复文件

3
由于某些必要性,我已经更改了.git/config中的ignorecase = false,以便进行大小写敏感操作。然后将文件从大写改为小写。例如,我手动将Account_Model.php重命名为Account_model.php,甚至在其他分支上也是如此。
由于大小写不同,git会产生未提交的更改,然后我用小写(git假定新文件是小写的)提交了新文件。
现在我有麻烦了。我为部署到服务器的repo拉取目录时,该目录创建了2个文件。一个是Account_model.php(我想要的),另一个是Account_Model.php
它们变成了两个单独的文件!但是回到我的本地,我只能在目录中看到1个文件。(因为其中一个,我无法删除大写的那个)
如果我更改其中一些文件,大小写不同的两个文件将同时发出警报。差异显示相同的修改。

Two file with same diff

但我只能在目录中看到一个。

Only 1 file in the directory

我无法删除大写的那个文件。如果可以的话,我想小写的那个也会被删除。

有一种方法可以通过命令来更改大小写。我知道,我选择了错误的方式。

那么我该如何处理这两个大小写文件,并永久保留更改后的(只有一个小写文件)?

非常感谢。

1个回答

13

默认情况下,OS X的文件系统不区分大小写。因此,如果你在Git存储库中有两个名称相同但大小写不同的文件,你就会遇到现在正在发生的问题。

一个简单的解决方法是使用磁盘工具创建一个区分大小写的磁盘映像,在上面克隆存储库,解决问题,然后推送修复。

制作磁盘映像...

  • 打开磁盘工具。
  • 进行 文件 -> 新建映像 -> 空映像。
  • 将格式设置为OS X扩展(区分大小写,日志记录)。

enter image description here

它将自动挂载并等待您在 /Volumes 中使用。克隆后,您应该可以看到两个文件,并且可以按照您的意愿处理它们。


1
好的!我终于按照你的方式操作了,创建了一个磁盘映像(这样就可以看到具有不同大小写的文件),克隆了所有文件,删除了小写文件,将它们从大写重命名为小写,并推送了它们。谢谢你。 <3 - Benyi

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