No se pueden descartar los cambios debido al nombre del file

Tengo un problema frustrante con mis repositorys git que no puedo resolver después de muchos bashs. Tengo dos imágenes llamadas amex.png y visa.png . Recuerdo cambiarles el nombre a Amex.png y Visa.png y comprometí estos cambios. Para algunos problemas desconocidos, git ahora siempre muestra estos files como modified sin importar lo que les haga.

 Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: app/assets/images/amex.png modified: app/assets/images/visa.png 

Yo uso git checkout -- app/assets/images/amex.png para descartar cambios pero en cambio me muestra un file nuevo como modified

 Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: app/assets/images/Amex.png modified: app/assets/images/visa.png 

De nuevo, si ejecuto git checkout -- app/assets/images/Amex.png , volvería a mostrar el primer nombre de file amex.png en estado de git. Parece estar cayendo en un bucle. Necesito romper este ciclo de alguna manera.

No afecta mi código de desarrollo, pero es molesto porque siempre tengo que prestarles atención cuando cometo mi código. Creo que puedo eliminar todo el código actual y volver a clonar mis repos, pero quiero saber de usted para poder resolverlo en el futuro.

Puedes probar lo siguiente. Nota: lo siguiente perderá todos los cambios no confirmados en su repository

Comience garantizando que no tiene files sin seguimiento en ese directory. Con git, puede escribir borrar todo el directory y luego reiniciarlo. Intentaré algo como esto:

 rm -rf app/assets/images/ git reset --hard HEAD 

Esto eliminará todo el directory y luego volverá a la última confirmación de git que tenga (leyendo estos files)

Otra opción es limpiar su sucursal con

 git clean -df 

Según la documentation de Git en git clean

git-clean – Elimina files sin seguimiento del tree de trabajo

Descripción

Limpia el tree de trabajo mediante la eliminación recursiva de files que no están bajo control de versiones, comenzando desde el directory actual.

Normalmente, solo se eliminan los files desconocidos para Git, pero si se especifica la opción -x, también se eliminan los files ignorados. Esto puede, por ejemplo, ser útil para eliminar todos los productos de compilation.

Si se dan arguments opcionales … solo se ven afectados esos paths.

Opciones

-d Elimina directorys no rastreados además de files no rastreados. Si un directory no rastreado es administrado por un repository de Git diferente, no se elimina de forma pnetworkingeterminada. Use la opción -f dos veces si realmente desea eliminar dicho directory.

-f –force Si la variable de configuration de Git clean.requireForce no está configurada como falsa, git clean rechazará la ejecución a less que se le dé -f, -n o -i.