Posted at

Git LFSのcase sensitivityについて

More than 1 year has passed since last update.

Git LFSでは、 .gitattribute というファイルで、Git LFS管理を行うファイルを指定します。

WinとMacでは、ファイルシステムにおける大文字小文字の区別が異なるため、( 各自「NTFS HFS+ case sensitivity」とかでぐぐってください )

.gitattribute上でも大文字と小文字を併記しないと、一部のWin版Gitクライアントで正しく動かず、LFSファイルがそのまま通常ファイルとしてコミットされてしまいます。

少なくともWin版TortoiseGitではそんな挙動でした。

.gitattribute

*.fbx filter=lfs diff=lfs merge=lfs -text

*.wav filter=lfs diff=lfs merge=lfs -text
*.prefab filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.a filter=lfs diff=lfs merge=lfs -text
*.mat filter=lfs diff=lfs merge=lfs -text
*.shader filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text

↑こうではなくて、

*.fbx filter=lfs diff=lfs merge=lfs -text

*.wav filter=lfs diff=lfs merge=lfs -text
*.prefab filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.a filter=lfs diff=lfs merge=lfs -text
*.mat filter=lfs diff=lfs merge=lfs -text
*.shader filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text
*.FBX filter=lfs diff=lfs merge=lfs -text
*.WAV filter=lfs diff=lfs merge=lfs -text
*.PREFAB filter=lfs diff=lfs merge=lfs -text
*.PSD filter=lfs diff=lfs merge=lfs -text
*.TGA filter=lfs diff=lfs merge=lfs -text
*.PNG filter=lfs diff=lfs merge=lfs -text
*.EXR filter=lfs diff=lfs merge=lfs -text
*.A filter=lfs diff=lfs merge=lfs -text
*.MAT filter=lfs diff=lfs merge=lfs -text
*.SHADER filter=lfs diff=lfs merge=lfs -text
*.UNITY filter=lfs diff=lfs merge=lfs -text

↑こうしましょう。


万が一コミットしてしまった場合は

git rm --cached *コミットしてしまったファイルのpath*

git add *コミットしてしまったファイルのpath*
git commit

などとすれば、LFS管理に戻せます。


そもそも大文字拡張子を使うなという話かもしれませんが……