Git删除具有不同大小写的相同文件

标签 git

由于某些需要,我更改了 .git/config ignorecase = false 以区分大小写。然后将文件从大写重命名为小写。例如,我手动将Account_Model.php重命名为Account_model.php,甚至其他分支。

通过不同的大小写,git 进行了未提交的更改,然后我用小写提交了新文件(git 假设新文件为小写)。

现在我有麻烦了。我将服务器的 repo pull 到哪里进行部署,该目录创建了 2 个文件。一个是 Account_model.php(我想要的),另一个是 Account_Model.php

它们变成了独立的两个文件!但是回到我的本地,我只看到目录中有 1 个文件。 (因为一个,我不能删除大写的一个)

如果我更改其中一些,具有不同案例的两个文件将同时发出警报。差异显示相同的修改。

Two file with same diff

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

Only 1 file in the directory

我不能删除大写的。 (如果可以的话,我想小写的也会被删除。

有一种方法可以通过命令改变大小写。我知道,我选错了路。

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

非常感谢。

最佳答案

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

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

制作磁盘镜像...

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

enter image description here

它会自动安装在 /Volumes 中等待您。克隆后,您应该会看到这两个文件并可以随意使用它们。

关于Git删除具有不同大小写的相同文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40488777/

相关文章:

linux - 在两个不同的 git repos 中的文件之间获取差异并应用于第一个 repo

android - 奇怪的自动提交(Android Studio、GitKraken、Ubuntu)?

git - 将 sha 添加到 git commit 或 elastic beanstalk deploy

git - 为什么 `git-svn`卡在 `Found possible branch point:`

Git ls-files 行为

git 克隆错误 : gnutls_handshake() failed: An unexpected TLS packet was received

git - 为什么git push gerrit HEAD :refs/for/master used instead of git push origin master

git - 撤消 Git Clean

git - heroku git :clone creates empty repository

c# - 跨版本的 COM 引用名称更改(Win7 CERTCLIENTLib 到 Win8 CERTCLILib)