小编典典

在 Git 中更改文件名的大小写

all

我正在尝试重命名文件以使其具有与以前不同的大小写:

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。


阅读 121

收藏
2022-03-06

共1个答案

小编典典

从 Git 2.0.1(2014 年 6 月 25 日)开始, a git mv 只能在不区分大小写的 OS 上工作

请参阅David Turner ( )提交
baa37bf
dturner-tw

mv:允许重命名以修复不区分大小写的文件系统上的大小写

git mv hello.txt Hello.txt” 在不区分大小写的文件系统上总是会触发 ” destination already exists” 错误,因为这两个名称从文件系统的角度来看是指同一个路径,并且需要用户--force在更正索引中记录的路径的大小写时给出 “
“下一次提交。

检测这种情况并允许它而不需要“ --force”。

git mv hello.txt Hello.txt只是工作(不再--force需要)。


另一种选择是:

git config --global core.ignorecase false

并直接重命名文件;git 添加并提交。

它确实在 CMD 中工作。它可能会在 git bash(在 Windows 上)会话中失败请参阅:

假设您要将 dir/mypath 重命名为 dir/myPath:

git mv dir/mypath dir/myPath

但它没有报告:

Rename from 'dir/mypath' to 'dir/mypath' failed. Should I try again? (y/n) 

问题是 bash 已经默默地替换了你的命令行dir/myPathdir/mypath因为它检测到这样的路径存在不同的大小写。

解决方案是使用中间移动操作:

git mv dir/mypath dir/mypath_temp
git mv dir/mypath_temp dir/myPath

正如在评论中指出的那样,如果您的本地存储库本身具有该设置:

git config --local core.ignorecase false
2022-03-06