¿Por qué mis files se muestran incorrectamente en git diff?

He encontrado un problema al usar la diferencia de Git. Por alguna razón, parece que está mal leyendo los files que cambio y la primera letra de cada línea se coloca en la línea modificada (+/-), así:

¡Esto sucede tanto en mi aplicación como en mi repository remoto!

ClasePhpComentario

Al principio, pensé que era posiblemente un error con el file que no se puede leer debido a la ! defined ('BASEPATH') ! defined ('BASEPATH') , pero esto también ocurre en files sin esta verificación, y también en los files JS de mi proyecto. Se lee perfectamente en CSS, HTML y ciertos files PHP.

Tal vez tengo algo mal configurado, aunque este es el primer repository que he tenido donde he tenido este problema. No sé qué información necesitará saber, pero si necesita algo, hágamelo saber y lo averiguaré.

EDITAR : la herramienta "FileMerge" muestra los cambios perfectamente, si eso ayuda.

FIJAR

Esto fue, como señaló KurzedMetal, un problema con los finales de línea de Mac / Windows. Esta es la solución que he usado por el momento para convertir las terminaciones de línea por el momento. No es perfecto, y si alguien puede sugerir una function mejor (idealmente recursiva), me complacería aceptarla.

 perl -pi -w -e 's/\r\n|\n|\r/\n/g;' *.php 

He tenido que hacer esto para cada subdirectory, por ejemplo

 perl -pi -w -e 's/\r\n|\n|\r/\n/g;' */*.php