Changing capitalization of filenames in Git
我试图重命名一个文件,使其大小写与以前不同:
1 2 | git mv src/collision/b2AABB.js src/collision/B2AABB.js fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js |
正如你所看到的,Git在这上面投了一个配合。我也尝试使用普通的旧
如何将文件更改为具有相同名称的不同大小写?我现在使用的是Mac OS X 10.7.3和Git 1.7.9.1,使用的是zsh 4.3.15。
考虑到上面的答案,您可以使用带有"-force"的单个命令:
1 | git mv --force myfile MyFile |
从Git2.0.1开始(2014年6月25日),
见David Turner的Commit Baa37bf(
在不区分大小写的文件系统上,"EDOCX1"〔6〕总是触发"
Detect this case and allow it without requiring"
--force ".
有时,您希望更改不区分大小写的文件系统(例如,在OS X或Windows上)上许多文件的大小写。执行
现在,您可以承诺更改了文件大小写。
OS X下的文件名不区分大小写(默认情况下)。这更多的是操作系统问题,而不是Git问题。如果删除并重新添加文件,您应该得到您想要的,或者将其重命名为其他文件,然后重新重命名。
因为操作是关于"更改Git中文件名的大小写"的:
如果您试图在项目中更改文件名的大写,则无需强制将其从Git中重命名。在我看来,我更愿意从我的IDE/编辑器中更改大写,并确保我正确配置了git以获取重命名。
默认情况下,Git模板设置为忽略大小写(不区分Git大小写)。要验证您是否具有默认模板,请使用
1 | git config --global --get core.ignorecase |
如果返回
1 | git config --global core.ignorecase false |
(确保您具有更改全局设置的适当权限)现在你有了它,你的Git不会忽视资本化,把它们当作是变化。
作为一个建议,如果您正在从事多语言项目,并且您认为不是所有项目都应该被Git视为区分大小写的,只需更新本地
您可以打开".git"目录,然后编辑"config"文件。在"[核心]"下设置"ignorecase=true",您就完成了;)
要在MacOS上将
1 | for f in *; do git mv"$f""`echo $f | tr"[:upper:]""[:lower:]"`"; done |
它会将文件夹中的所有文件小写。
这个python代码段将
修改到你喜欢的程度,我想我会分享:)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import os import re searchDir = 'c:/someRepo' exclude = ['.git', 'node_modules','bin'] os.chdir(searchDir) for root, dirs, files in os.walk(searchDir): dirs[:] = [d for d in dirs if d not in exclude] for f in files: if re.match(r'[A-Z]', f): fullPath = os.path.join(root, f) fullPathLower = os.path.join(root, f[0].lower() + f[1:]) command = 'git mv --force ' + fullPath + ' ' + fullPathLower print(command) os.system(command) |