トラブルシューティング

ファイル名の大文字・小文字変更が反映されない問題

macOS/Windows でファイル名の大文字・小文字だけ変更しても Git が検知しない問題と対処法

ファイル名の大文字・小文字変更が反映されない問題 diagram

問題の原因

macOS と Windows のファイルシステムは大文字・小文字を区別しません(case-insensitive)。

そのため、ファイル名を「File.txt」から「file.txt」に変更しても、OS レベルでは同じファイルとして扱われ、Git も変更を検知しません。

Git の設定 core.ignorecase が true(デフォルト)になっていることが原因です。

git mv で安全にリネームする

git mv コマンドを使うと、Git のインデックスレベルでファイル名を変更できるため、大文字・小文字の変更も正しく反映されます。

これが最も安全で推奨される方法です。

bash
# 大文字から小文字に変更
git mv File.txt file.txt

# ディレクトリ名の変更も同様
git mv Components components

# 変更を確認
git status

一度に変更できない場合の回避策

  1. 一度別名にリネーム

    git mv File.txt file-temp.txt のようにまったく別の名前に変更します。

  2. 目的の名前にリネーム

    続けて git mv file-temp.txt file.txt で本来の名前に変更します。

  3. まとめてコミット

    2 段階分の変更を git commit -m "Rename File.txt to file.txt" でまとめます。

bash
# 2段階リネーム
git mv File.txt file-temp.txt
git mv file-temp.txt file.txt
git commit -m "Rename File.txt to file.txt"

core.ignorecase の設定について

core.ignorecase を false に変更すると Git が大文字・小文字を区別するようになりますが、OS のファイルシステムと矛盾が生じるため推奨されません。

同じディレクトリに「File.txt」と「file.txt」が共存するような状況が発生し、予期せぬトラブルの原因になります。

git mv を使う方法が安全です。

bash
# 現在の設定を確認(変更は非推奨)
git config core.ignorecase

関連コマンド