Solucionando problemas de nombres de files sensibles a mayúsculas y minúsculas en diferentes twigs de Git

Tengo varias twigs (master, desarrollador y feature / *), y de alguna manera los nombres de los files fueron asignados con diferentes casos.

En las twigs maestra y de desarrollo tengo Assets.php y events.php que son correctos (son diferentes bibliotecas de proveedores, por lo tanto, la diferencia de mayúsculas y minúsculas). Pero en una twig de características, los nombres de los files son actualmente assets.php y Events.php, la carcasa completamente opuesta. Cuando trato de pagar una twig de function obtengo el siguiente error.

error: The following untracked working tree files would be overwritten by checkout: assets.php Events.php Please move or remove them before you can switch branches. Aborting 

Logré solucionar el problema entre mi maestro y la twig de desarrollo a través de una serie no científica de eliminar, comprometer, volver a agregar y comprometer y prefiero no repetir ese process para mis otras 3 twigs de características.

Como ni siquiera puedo acceder a mi twig de características para get los cambios de master / develop, no estoy seguro de cómo solucionar este problema sin search a tientas una serie de files de eliminación / adición / confirmación en cada twig.

¿Cuál es la mejor manera de arreglar esto?

Como core.ignorecase estar en Windows (de lo contrario no tendrías este problema), asumiría que la configuration de configuration core.ignorecase ya está habilitada, pero aparentemente no es así.

Entonces, ¿qué haría?

  • Habilite core.ignorecase usando git config core.ignorecase true
  • Echa un vistazo a la twig de características (que ahora debería funcionar)
  • Usa git mv para arreglar el caso de los nombres de file

(También debería poder desactivar core.ignorecase nuevamente y ejecutar el git status para ver si hay alguna confusión).

Si no funciona, tal vez necesites una versión más nueva de Git. Probé esto usando la versión "2.8.1.windows.1".

La otra solución que no se basa en core.ignorecase sería clonar el repository en una nueva carpeta, utilizando el argumento -b para especificar la twig para verificar después de la clonación, y arreglar las cosas allí. Dado que git mv no funcionará para algo como a.txt A.txt si el core.ignorecase no está configurado o no es compatible, deberías hacer dos movimientos: git mv a.txt a2.txt y git mv a2.txt A.txt .