我正在尝试重命名文件以使其具有与以前不同的大小写:
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 没有选择重命名(作为重命名 或 作为新的未跟踪文件)。
mv
如何更改文件以具有相同名称的不同大小写?我在 Mac OS X v10.7.3 (Lion) 和 Git 1.7.9.1 上使用Z shell (zsh) 4.3.15。
从 Git 2.0.1(2014 年 6 月 25 日)开始, a git mv 只能在不区分大小写的 OS 上工作。
git mv
请参阅David Turner ( )的提交 baa37bf。dturner-tw
dturner-tw
” git mv hello.txt Hello.txt” 在不区分大小写的文件系统上总是会触发 ” destination already exists” 错误,因为这两个名称从文件系统的角度来看是指同一个路径,并且需要用户--force在更正索引中记录的路径的大小写时给出 “ “下一次提交。
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/myPath,dir/mypath因为它检测到这样的路径存在不同的大小写。
dir/myPath
dir/mypath
解决方案是使用中间移动操作:
git mv dir/mypath dir/mypath_temp git mv dir/mypath_temp dir/myPath
正如在评论中指出的那样,如果您的本地存储库本身具有该设置:
git config --local core.ignorecase false