gitは大文字小文字をデフォルトで区別していない件
注意点
自分も同じ状態になったことがあった。その時の流れはこんな感じ(確か)
- リモートにファイル名の変更に関連するコミットをプッシュ
- ファイル名の大文字小文字が区別されないことに気づく
- configを変更して区別するようにする
- ファイル名を変更したコミットをプッシュ
- リモートに元のファイルが並行して残る
configファイルの設定変更タイミングが良くないので、
この問題が発生した時は、記事にあるように一度ファイル削除コミットをプッシュして大文字小文字問題を一旦解決させてからconfigを修正するのが良さそう。
その場合の流れ
- リモートにファイル名の変更に関連するコミットをプッシュ
- ファイル名の大文字小文字が区別されないことに気づく
- 該当ファイルの削除コミットをプッシュ(+正しい名前の該当ファイルの再作成コミットをプッシュ)
- configを変更して区別するようにする
- 以後いつも通り
Git公式ドキュメント
core.ignoreCase
Internal variable which enables various workarounds to enable Git to work better on filesystems that are not case sensitive, like APFS, HFS+, FAT, NTFS, etc. For example, if a directory listing finds "makefile" when Git expects "Makefile", Git will assume it is really the same file, and continue to remember it as "Makefile".
The default is false, except git-clone[1] or git-init[1] will probe and set core.ignoreCase true if appropriate when the repository is created.
Git relies on the proper configuration of this variable for your operating and file system. Modifying this value may result in unexpected behavior.
(DeepL翻訳)
APFS、HFS+、FAT、NTFSなどのような大文字小文字を区別しないファイルシステムでGitがうまく動くようにするための様々な回避策を可能にする内部変数。例えば、Gitが "Makefile "を想定している時にディレクトリ一覧で "makefile "が見つかった場合、Gitはそれを本当に同じファイルだとみなし、"Makefile "として記憶し続けます。デフォルトは false です。ただし、git-clone[1] や git-init[1] はリポジトリの作成時に core.ignoreCase を調べて適切なら true にします。
Git は、オペレーティングシステムやファイルシステムに合わせてこの変数を適切に設定する必要があります。この値を変更すると、予期しない動作をすることがあります。