Git cuando se usa con Mac y Windows simultáneamente da conflictos innecesarios

Tengo un repo de git y generalmente trabajo en él a través de mi computadora portátil mac. También había clonado el repository en mi computadora portátil con Windows (usando git bash y cygwin ) anteriormente, todo estaba bien, pero hoy, cuando tomé un git pull , tuve varios merge conflicts aunque no tuve cambios locales en mi computadora portátil con Windows.

Creo que puede ser que las carpetas en mac usen / (barra diagonal) y en Windows \ (barra invertida) pero no estoy seguro.

¿Alguien puede decirme por qué sucedió esto y cómo resolver esto?

Cuando trabaje en el mismo repository desde diferentes sistemas operativos, debe definir terminaciones de línea apropiadas en el nivel de repository, o si usted es el único usuario, configure sus clientes de Git para que hagan conversiones finales de línea cuando sea necesario. Ejemplos aquí (Github) y aquí (documentation oficial de Git) .

Lo que probablemente debería hacer es configurar las cajas de CR + LF en Windows

 git config --global core.autocrlf true 

y forzar a LF en commit para Mac.

 git config --global core.autocrlf input 

Lidiar con las diferencias de espacios en blanco en cada fusión se volverá molesto y engorroso muy rápido.

El separador de carpetas en los pathes no puede hacer eso, git es lo suficientemente inteligente en este sentido.

Los espacios en blanco difieren:

  • Mac utiliza una línea final diferente ( 0x0d lugar de 0x0d 0x0a en Windows)
  • Las tabs también pueden diferir, dependiendo de la configuration del editor de text (la pestaña es \t en la máquina 1 mientras que es de 4 a 8 espacios en la máquina2)

La solución para esto es la bandera --ignore-all-space , así que:

 git merge --ignore-all-space ...