タイトルの通りなのですが、gitは環境によって、git init
やgit clone
時に、リポジトリのファイル名の大文字小文字の検出オプション(core.ignorecase
)をtrue
にすることがあります。
おそらく大文字小文字を区別しないファイルシステムだとcore.ignorecase=true
にするようです。
さっそく、本当なのか見てみましょう。
macOS の場合 (APFS 大文字小文字区別なし)
# 環境作成
$ mkdir gittest
$ cd !$
$ git init .
# テスト。たしかに true になっている
$ git config -l --local | grep ignorecase
core.ignorecase=true
# 設定ファイルも見てみる。たしかに設定されている。
$ grep -Hn ignorecase .git/config
.git/config:6: ignorecase = true
Ubuntuの場合 (ext4 大文字小文字区別あり)
# Vagratで環境セットアップ
$ vagrant init ubuntu/trusty64
$ vagrant up
$ vagrant ssh
$ sudo -i
$ apt-get update && apt-get install -y git
$ mkdir gittest
$ cd !$
$ git init .
# テスト。ignorecaseの記述はない。
$ git config -l --local | grep ignorecase
# 設定ファイルにもない
$ cat ~/.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
(Linuxでケースインセンシティブなファイルシステムの場合は未検証)
Windowsの場合 (NTFS 大文字小文字区別なし)
REM 環境作成
$ mkdir gittest
$ git init .
REM テスト。たしかに true になっている。
$ git config -l --local | find "ignorecase"
core.ignorecase=true
REM (設定ファイルは省略)
Special Thanks
- https://qiita.com/sawadashota/items/aa312a3b7e2403448efe
-
これのデフォルトってファイルシステム(OS)依存だったりしませんか?
— はぇ~☆ (@haxe) March 4, 2020