巷にある対処法として、
git config core.ignorecase false
というコマンドがありますが、TurtoiseGit (Windows) を使っている場合、これでは解決できなかった(り、想定外のハマり方をする)ので、別の対処法を示します。
core.ignorecase を TurtoiseGit で変更する(→ハマる)
この方法は解決にはならないので注意(やったら不幸になる例として紹介します)
コマンドラインで上記コマンド(git config core.ignorecase false)を入力しても TurtoiseGit には反映されません。

代わりに、TurtoiseGit > 設定
を開きます。

ローカルリポジトリ設定を編集

ignorecase = false に書き換える
こうすることで、大文字小文字が違うファイルを「別ファイル」として認識し、コミット&プッシュできるようになります、が…。
Windows は大文字小文字が違うファイルを別ファイルとして認識しない
そうです。先の例の monstercode.txt、monsterCode.txt、この2つは Windows において「同一ファイル」と見なされます。
という事は、いくら Git で上記ファイル(2つ)がプッシュされていても、クローンするとどちらか1つになってしまいます。予想外かつ、致命的な状況です。
ですので、Windows で使っている場合においては core.ignorecase = false 自体が悪手ということになります。
Mac や Linux であれば問題ありませんが、Windows 使っている人とやりとりしている場合は注意してください。
この状態を回避する方法
正しい解決策とは言いづらいですが、「なんとかする」事は可能です。
- 元のファイル名:monstercode.txt
- change.txt に名前変更し、新規ファイルとしてコミット(&プッシュ)
- monsterCode.txt に名前変更し、新規ファイルとしてコミット(&プッシュ)
このように、間に別の名前を挟むことで変更することができます。
ただし「回避策」なだけあってとても非直感的な対処方法ですので、多用はしないようにしましょう。