Open3

gitは大文字小文字をデフォルトで区別していない件

ふじしろふじしろ

注意点

https://zenn.dev/axpensive/articles/9e63dd50ce0cd3

自分も同じ状態になったことがあった。その時の流れはこんな感じ(確か)

  1. リモートにファイル名の変更に関連するコミットをプッシュ
  2. ファイル名の大文字小文字が区別されないことに気づく
  3. configを変更して区別するようにする
  4. ファイル名を変更したコミットをプッシュ
  5. リモートに元のファイルが並行して残る

configファイルの設定変更タイミングが良くないので、
この問題が発生した時は、記事にあるように一度ファイル削除コミットをプッシュして大文字小文字問題を一旦解決させてからconfigを修正するのが良さそう。

その場合の流れ

  1. リモートにファイル名の変更に関連するコミットをプッシュ
  2. ファイル名の大文字小文字が区別されないことに気づく
  3. 該当ファイルの削除コミットをプッシュ(+正しい名前の該当ファイルの再作成コミットをプッシュ)
  4. configを変更して区別するようにする
  5. 以後いつも通り
ふじしろふじしろ

Git公式ドキュメント
https://git-scm.com/docs/git-config#Documentation/git-config.txt-coreignoreCase

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 は、オペレーティングシステムやファイルシステムに合わせてこの変数を適切に設定する必要があります。この値を変更すると、予期しない動作をすることがあります。