Windows est insensible à la casse (plus précisément, cas-préservation). Il n'y a simplement aucun moyen possible d'exister deux fichiers dont les noms ne diffèrent que dans le cas: deux noms de fichiers qui ne diffèrent que dans le cas sont le même nom de fichier. Période. Par conséquent, Git parcourt le référentiel, vérifiant un fichier après l'autre, jusqu'à ce qu'il touche le premier des deux fichiers de problèmes. Git le vérifie, puis va plus loin dans ses affaires jusqu'à ce qu'il atteigne le second fichier. Encore une fois, Git le vérifie. Du point de vue de Windows, le nom de fichier est le même que le premier, le premier fichier est simplement écrasé par le second. Ce qui fait maintenant penser à Git que le premier fichier a été changé pour avoir le même contenu que le second. Notez que cela n'a rien à voir avec Git: il en serait exactement de même si vous aviez une archive tar, un fichier zip ou un dépôt Subversion.
Si vous voulez faire du développement sur plusieurs plates-formes différentes, vous devez respecter les restrictions de ces plates-formes et vous devez vous limiter au plus petit dénominateur commun de toutes les plates-formes que vous prenez en charge. Windows prend en charge ADS, Linux non. OSX prend en charge les forks de ressources, Windows non. BSD prend en charge la casse, Windows ne le fait pas. Donc, vous ne pouvez en utiliser aucun. C'est comme ça.
core.ignorecase
ne va pas vous aider ici, car cela gère exactement le problème opposé.
Question géniale et la réponse de Greg vient de se poser! – Hazok
Cela peut également se produire lorsque vous créez le fichier avec un boîtier différent dans différentes branches de Windows. – Thomas