2021-01-04 • ☕️ 2 min read
App
和app
在 Macos 看来是同一个。App
和app
在 Linux 看来是不同的文件系统,可以共存。cd ` mktemp -d`
git init
git remote add origin git@xxxx.com
mkdir app
cd app && touch index.js && git push
# 配置git大小写敏感
git config core.ignorecase false
mv app App && git push
此时,gitlab 上就会出现 App
和 app
两个同名的目录。
将 git 的大小写敏感开启后,如果用文件系统工具 mv 将 a
重命名为A
后,文件系统并不会认为文件发生了变化,git 也不会认为是进行了文件重命名,而是认为新增了文件。
这样提交后,就会导致远程仓库有两份文件a
和A
。
此种问题最简单的处理办法是在 Linux 下进行文件名的重新校正。
如果没有 Linux 环境,在 Macos 下也是可以的,就是比较麻烦,需要用磁盘工具创建一个对大小写敏感的磁盘镜像并挂载,然后将仓库重新 clone 到此磁盘镜像中并进行文件名的校准。
# 创建一个文件系统为敏感的HSF+,容量1G的大小稀疏磁盘镜像
hdiutil create -size 1g -fs "Case-sensitive Journaled HFS+" -type SPARSE -volname Projects ~/Projects.dmg
# 挂载
hdiutil attach ~/Projects.dmg.sparseimage
# 设置 /Volumes/Projects/ 下文件可见
sudo setfile -a V /Volumes/Projects/
# 重启 finder
killall Finder
# 创建目录
mkdir /Volumes/Projects/projects/
git clone git@xxx.com
# 文件名校准
rm -rf ....
利用 git 自带的文件夹命名工具git mv
进行操作(可不用配置 git 大小写敏感),但是要注意:在对大小写不敏感的文件系统上,需要设置缓存文件,like this:
git mv test temp && git mv temp Test
Personal blog by Natumsol.
Note thoughts and experience.