我试图重命名一个文件有不同的大小写,从它之前:

git mv src/collision/b2AABB.js src/collision/B2AABB.js
fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js

正如您所看到的,Git对此进行了处理。我也尝试过使用普通的旧mv命令重命名,但Git没有接收重命名(作为重命名或作为新的未跟踪文件)。

如何将文件更改为相同名称的不同大写?我在Mac OS X v10.7.3 (Lion)上,Git 1.7.9.1,使用Z shell (zsh) 4.3.15。


当前回答

有时你想在一个不区分大小写的文件系统(例如在macOS或Windows上)上更改许多文件名的大写。单独执行git mv命令很快就会厌倦。为了让事情变得简单一点,我是这样做的:

将所有受影响的文件从目录移到桌面。 做一个git添加。-A删除这些文件。 将桌面上的所有文件重命名为适当的大写。 将所有文件移回原始目录。 做一个git添加..Git应该可以看到文件被重命名了。

现在您可以进行提交,表示您已经更改了文件名大写。

其他回答

OS X下的文件名不区分大小写(默认情况下)。这与其说是Git的问题,不如说是操作系统的问题。如果删除并读取该文件,则应该得到您想要的内容,或者将其重命名为其他内容,然后再重命名回来。

你可以打开“。目录,然后编辑“配置”文件。在“[core]”下设置,设置“ignorecase = true”,你就完成了;)

在git配置中将ignorecase设置为false

因为原来的帖子是关于“在Git中改变文件名的大写”:

如果你试图改变项目中文件名的大写,你不需要强制从Git重命名它。在我看来,我宁愿从我的IDE/编辑器中改变大写,并确保我正确配置Git来重命名。

默认情况下,Git模板被设置为忽略大小写(Git不区分大小写)。要验证是否拥有默认模板,请使用——get来检索指定键的值。使用——local和——global指示Git是从本地Git存储库配置中获取配置键-值还是全局配置中获取配置键-值。例如,如果您想查找全局键核心。Ignorecase(如果命令没有返回,你可能需要用sudo作为前缀):

git config --global --get core.ignorecase

如果返回true,请确保将其设置为:

git config --global core.ignorecase false

(确保您有适当的权限更改全局。) 结果就是这样;现在你的Git安装不会忽略大写字母,并将它们视为变化。

作为一个建议,如果您正在开发多语言项目,并且您觉得Git不应该将所有项目都区分大小写,那么只需更新本地核心即可。ignorecase文件。

在macOS上把git mv文件批量成小写,在Windows上把git bash批量成小写:

for f in *; do git mv "$f" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done

它将一个文件夹中的所有文件小写。

考虑到larsks的回答,你可以用“——force”命令让它工作:

 git mv --force myfile MyFile