macOSやWindowsでは、readme.txtをREADME.txtに変えるように、ファイル名の大文字・小文字だけを変更しても、Gitが変更として検知しません。Gitの設定core.ignorecaseをfalseにすると、検知されるようになります。
設定方法
リポジトリのフォルダで、以下のコマンドを実行します。--localを付けているので、設定はそのリポジトリだけに適用されます。
git config --local core.ignorecase false今の設定は、以下のコマンドで確認できます。
git config core.ignorecase検知されない理由
macOS(APFS)やWindows(NTFS)のファイルシステムは、標準ではファイル名の大文字と小文字を区別しません。Gitは、git initやgit cloneでリポジトリを作るときにファイルシステムを調べ、大文字と小文字を区別しない環境ではcore.ignorecaseをtrueに設定します。この設定がtrueのあいだは、大文字・小文字だけが違うファイル名を同じファイルとして扱います。
falseにしたときの注意点
core.ignorecaseをfalseにしてからファイル名を変えてgit addすると、新しい名前のファイルが追加されるだけで、古い名前のファイルもGitの管理に残ります(Git 2.55.0で確認)。
mv readme.txt README.txtgit add -Agit ls-filesREADME.txtreadme.txtこのままコミットすると、大文字と小文字を区別する環境(Linuxのサーバーなど)では、2つのファイルが別々に存在することになります。古い名前のファイルは、以下のコマンドでGitの管理から外します。
git rm --cached readme.txtGitの公式ドキュメントには、core.ignorecaseはGitがOSやファイルシステムに合わせて設定する値で、変更すると予期しない動作になることがあると書かれています。
設定を変えずにファイル名を変更する
ファイル名の変更をgit mvでおこなえば、core.ignorecaseがtrueのままでも、大文字・小文字だけの変更が名前の変更として記録されます。設定を変える必要がなく、古い名前のファイルも残りません。
git mv readme.txt README.txt参考・引用
この記事は役に立ちましたか?