Git 区分大小写
Posted
技术标签:
【中文标题】Git 区分大小写【英文标题】:Case sensitivity in Git 【发布时间】:2012-02-12 19:54:36 【问题描述】:我遇到了 git 的问题。基本上我设置为 false core.ignorecase
因为我想更改某些文件夹名称的大小写(因为我在 OSX 下使用不区分大小写的文件系统,因此未显示更改)。当我提取数据时,我注意到现在每个重命名的文件夹在存储库中出现了两次,旧名称和新名称都有。我不知道如何删除旧文件夹,因为它们没有出现在本地(我尝试再次将 core.ignorecase
设置为 true,但没有帮助)。
【问题讨论】:
也许你可以在一个镜像上创建一个 ext3 文件系统,挂载它,然后拉入这个区分大小写的文件系统。 @AndréPuel 好吧,实际上我在寻找“更简单”的东西。 :P 但是感谢您的建议,如果我找不到其他解决方案,我会去的。 【参考方案1】:可能是类似于this comment in an msysgit issue 的解决方法(对于另一个不区分大小写的操作系统:Windows)会有所帮助吗?
我也遇到过同样的问题。在 Eclipse 中重构了一个包名称,并由于文件夹名称未还原而导致切换到以前的构建中断。我正在使用 Windows 7,Git 1.7.0.2.msysgit.0
我的文件夹在 Windows 中重命名为“
folder
”,但在 Git 中显示为“Folder
”。 我通过在 Windows 中将其重命名为“Folder
”然后运行来解决此问题:
git mv "Folder" "Folder2"
git mv "Folder2" "folder"
请注意,从 git 2.0.1(2014 年 6 月)开始,git mv Folder folder
应该可以正常工作!
见“Git: Changing capitalization of filenames”
【讨论】:
我注意到以这种方式重命名时,第二次重命名可能需要 looooong 时间。答案是要有耐心;该文件夹最终将重命名,然后您可以提交它。 另一种方法是将“Folder”重命名为“Folder2”并进行提交,然后将“Folder2”重命名为“folder”并修改最后一次提交。 @DaniCE 我刚刚编辑了答案:使用 git 2.0.1 这应该更简单。【参考方案2】:在 macOS 上使用以下命令。这会将您的 git 配置更改为文件名区分大小写。
git config core.ignorecase false
您可以通过编辑~/.gitconfig
并将其设置在core
下进行全局设置,例如:
[core]
ignoreCase = false
【讨论】:
我做了完全相反的事情,以使 git 成功执行包含案例重命名的变基。谢谢!【参考方案3】:您可以使用区分大小写的文件系统创建磁盘映像(最好是 sparsebundle 磁盘映像),并在那里签出您的 git 存储库。
下面的磁盘工具屏幕截图显示了如何创建区分大小写的磁盘映像。
【讨论】:
对这个问题和其他因区分大小写而产生的谜团的更好、永久的解决方案。我制作了磁盘映像;将我的旧 Git 存储库复制到其中;从我用来保存所有 git 存储库的地方创建了一个符号链接到新的稀疏捆绑版本。恢复正常的工作流程,再也不会遇到这种情况了。 这样创建的磁盘非常非常慢。 @MinqiPan,我也有同样的担忧,但如果您创建 APFS 卷,则不应该如此。 APFS volumes can exist in the same "container" partition,因此没有性能损失。【参考方案4】:Mac OS X 默认情况下是“不区分大小写但保留大小写”。这是一个重要的区别。
我建议您创建另一个磁盘映像,并将其专门格式化为“HFS 区分大小写”。
【讨论】:
感谢您的提示,但上面的帖子解决了一切! 不幸的是,很多糟糕的软件(当然是 Adobe)依赖于默认的损坏的 OSX 文件系统。小心点。【参考方案5】:git mv "Folder" "Folder2"
git mv "Folder2" "folder"
git commit -a -m "my message"
【讨论】:
是的。你必须继续并提交它。 ++【参考方案6】:在 git@vger.kernel.org 讨论论坛上有一个名为 Bug? Git checkout fails with a wrong error message 的关于区分大小写问题的较长帖子,其中突出了不同平台之间区分大小写的问题和尝试的方法。
【讨论】:
以上是关于Git 区分大小写的主要内容,如果未能解决你的问题,请参考以下文章