knp*_*wrs 426 git rename case-sensitive file-rename
我试图重命名一个文件,使其具有与之前不同的大小写:
git mv src/collision/b2AABB.js src/collision/B2AABB.js
fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,git对此有所帮助.我尝试使用普通的旧mv命令重命名,但git没有选择重命名(作为重命名或新的未跟踪文件).
如何将文件更改为具有相同名称的不同大小写?我使用zsh 4.3.15使用git 1.7.9.1在Mac OS X 10.7.3上.
Von*_*onC 493
启动git 2.0.1(2014年6月25日),git mv将只对不区分大小写的操作系统起作用.
mv:允许重命名以修复不区分大小写的文件系统上的大小写" git mv hello.txt Hello.txt"对不区分大小写的文件系统总是会触发" destination already exists"错误,因为这两个名称从文件系统的角度来看是指相同的路径,并且要求用户--force在更正索引中记录的路径的情况时给出" "下一次提交.
检测这种情况并允许它而不需要"
--force".
git mv hello.txt Hello.txt只是工作(不再--force需要).
Mar*_*les 439
考虑到上面的答案,您可以使用"--force"使用单个命令:
git mv --force myfile MyFile
Run Code Online (Sandbox Code Playgroud)
MrH*_*Hus 88
有时候你想要改变OS X上很多文件的大小写.执行git mv命令会很快就会出现问题,让事情变得更容易这就是我的工作:
git add . -A删除所有文件.git add .混帐应该看到的是,文件被重命名.现在你可以做一个提交说你已经改变了文件大写.
lar*_*sks 60
OS X下的文件名不区分大小写(默认情况下).这更像是一个操作系统问题,而不是一个git问题.如果您删除并重新添加该文件,您应该得到您想要的内容,或者将其重命名为其他内容并将其重命名.
Seg*_*ted 24
由于OP是关于"改变Git中文件名的大写":
如果您尝试更改项目中文件名的大写,则无需强制从git重命名.IMO,我宁愿从我的IDE /编辑器更改大写,并确保我正确配置git以获取重命名.
默认情况下,git模板设置为忽略大小写(git大小写不敏感).验证您是否使用默认模板--get来检索指定键的值.使用--local和--global表示git是否从本地git repo配置或全局配置中获取配置键值.例如,如果要查找全局密钥,请执行以下操作core.ignorecase:
git config --global --get core.ignorecase
Run Code Online (Sandbox Code Playgroud)
如果返回,请true确保将其设置为:
git config --global core.ignorecase false
Run Code Online (Sandbox Code Playgroud)
(确保你有适当的权限来改变全局)你有它,现在你的git不会忽略Capitalisations并将它们视为变化.
作为一个建议,如果您正在从事多语言项目,并且您觉得并非所有项目都应该被git视为区分大小写,那么只需更新本地项目 core.ignorecase
Vonc的回答是完全正确的,但仍然存在一种潜在的情况,即您的重命名操作不适用于 Windows 版 git:
假设您想将 dir/mypath 重命名为 dir/myPath:
git mv dir/mypath dir/myPath
Run Code Online (Sandbox Code Playgroud)
但它无法报告:
Rename from 'dir/mypath' to 'dir/mypath' failed. Should I try again? (y/n)
Run Code Online (Sandbox Code Playgroud)
问题是 bash 已经悄悄地替换了你的命令行,dir/myPath因为dir/mypath它检测到存在这样一个具有不同大小写的路径。
解决方案是使用中间移动操作:
git mv dir/mypath dir/mypath_temp
git mv dir/mypath_temp dir/myPath
Run Code Online (Sandbox Code Playgroud)
在 macOS上将git mv文件批量转换为小写,在 Windows 上将文件批量转换为小写:
for f in *; do git mv "$f" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
Run Code Online (Sandbox Code Playgroud)
它将小写文件夹中的所有文件。
您可以打开“ .git”目录,然后编辑“ config”文件。在“ [core]”下设置“ ignorecase = true”,就可以完成;)
| 归档时间: |
|
| 查看次数: |
145500 次 |
| 最近记录: |