Esta respuesta parece relevante ya que el OP hace referencia a la necesidad de una solución de múltiples sistemas operativos. Este artículo de ayuda de Github detalla los enfoques disponibles para manejar los finales de las líneas entre sistemas operativos. Existen enfoques globales y por repositorio para administrar los finales de línea entre sistemas operativos.
Enfoque global
Configure el manejo de finales de línea de Git en Linux u OS X:
git config --global core.autocrlf input
Configure el manejo de finales de línea de Git en Windows:
git config --global core.autocrlf true
Enfoque por repositorio:
En la raíz de su repositorio, cree un .gitattributes
archivo y defina la configuración de final de línea para los archivos de su proyecto, una línea a la vez en el siguiente formato: path_regex line-ending-settings
donde line-ending-settings
es uno de los siguientes:
- texto
- binario (archivos para los que Git no debería modificar los finales de línea, ya que esto puede hacer que algunos tipos de imágenes, como PNG, no se procesen en un navegador)
El text
valor se puede configurar más para instruir a Git sobre cómo manejar los finales de línea para los archivos coincidentes:
text
- Cambia los finales de línea a los finales de línea nativos del sistema operativo.
text eol=crlf
- Convierte los finales de línea CRLF
en al finalizar la compra.
text eol=lf
- Convierte los finales de línea LF
en al finalizar la compra.
text=auto
- Valor predeterminado sensato que deja el control de la línea a discreción de Git.
Aquí está el contenido de un archivo .gitattributes de muestra:
# Set the default behavior for all files.
* text=auto
# Normalized and converts to
# native line endings on checkout.
*.c text
*.h text
# Convert to CRLF line endings on checkout.
*.sln text eol=crlf
# Convert to LF line endings on checkout.
*.sh text eol=lf
# Binary files.
*.png binary
*.jpg binary
Más información sobre cómo actualizar su repositorio después de cambiar la configuración de los finales de línea aquí . Tldr:
Haga una copia de seguridad de sus archivos con Git, elimine todos los archivos de su repositorio (excepto el directorio .git) y luego restaure todos los archivos a la vez. Guarde sus archivos actuales en Git, para que no se pierda nada de su trabajo.
git add . -u
git commit -m "Saving files before refreshing line endings"
Elimina el índice y obliga a Git a volver a escanear el directorio de trabajo.
rm .git/index
Vuelva a escribir el índice de Git para recoger todos los nuevos finales de línea.
git reset
Muestra los archivos normalizados y reescritos.
En algunos casos, esto es todo lo que se necesita hacer. Otros pueden necesitar completar los siguientes pasos adicionales:
git status
Vuelva a agregar todos sus archivos modificados y prepárelos para una confirmación. Esta es su oportunidad de inspeccionar qué archivos, si los hay, no se modificaron.
git add -u
Es perfectamente seguro ver aquí muchos mensajes que dicen "advertencia: CRLF será reemplazado por LF en el archivo".
Vuelva a escribir el archivo .gitattributes.
git add .gitattributes
Confirme los cambios en su repositorio.
git commit -m "Normalize all the line endings"