Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.

Esta versión de GitHub Enterprise se discontinuará el Esta versión de GitHub Enterprise se discontinuó el 2020-01-22. No se realizarán lanzamientos de patch, ni siquiera para problemas de seguridad críticos. Para obtener un mejor desempeño, más seguridad y nuevas características, actualiza a la última versión de GitHub Enterprise. Para obtener ayuda con la actualización, contacta al soporte de GitHub Enterprise.

Configurar Git para manejar finales de línea

Para evitar problemas en tus diferencias, puedes configurar Git para manejar correctamente los finales de línea.

Cada vez que presiones return en tu teclado estarás insertando un carácter invisible denominado fin de línea. Históricamente, los diferentes sistemas operativos han manejado los finales de línea de manera diferente.

Al visualizar cambios en un archivo, Git maneja los finales de línea a su manera. Dado que estás colaborando en proyectos con Git y GitHub Enterprise, Git puede producir resultados inesperados si, por ejemplo, estás trabajando en una máquina con Windows y tu colaborador ha realizado un cambio en OS X.

Parámetros globales para finales de línea

El comando git config core.autocrlf se usa para cambiar el modo en que Git maneja los finales de línea. Toma un solo argumento.

En OS X, simplemente escribes input en la configuración. Por ejemplo:

$ git config --global core.autocrlf input
# Configura Git en OS X para manejar correctamente los finales de línea

En Windows, simplemente escribes true en la configuración. Por ejemplo:

$ git config --global core.autocrlf input
# Configura Git en Windows para manejar correctamente los finales de línea

En Linux, simplemente escribes input en la configuración. Por ejemplo:

$ git config --global core.autocrlf input
# Configura Git en Linux para manejar correctamente los finales de línea

En OS X y Linux, habitualmente escribes input para este parámetro. En Windows, habitualmente deseas usar true. Por ejemplo:

$ git config --global core.autocrlf input
# Configura Git en OS X o Linux para manejar correctamente los finales de línea

$ git config --global core.autocrlf true
# Configura Git oen Windows para manejar correctamente los finales de línea

Parámetros por repositorio

Opcionalmente, puedes configurar el modo en que Git maneja los finales de línea por repositorio al configurar un archivo especial .gitattributes. Este archivo está confirmado en el repositorio y sobrescribe un parámetro core.autocrlf del individuo, garantizando el comportamiento uniforme para todos los usuarios, independientemente de sus parámetros de Git. La ventaja de un archivo .gitattributes es que las configuraciones de la línea están asociadas con tu repositorio. No debes preocuparte por si los colaboradores tienen los mismos parámetros de fin de línea que tienes tú.

El archivo .gitattributes debe crearse en la raíz del repositorio y confirmarse como cualquier otro archivo.

Un archivo .gitattributes se asemeja a una tabla con dos columnas:

  • A la izquierda está el nombre del archivo que coincide con Git.
  • A la derecha está la configuración de fin de línea que Git debería usar para esos archivos.

Ejemplo

Aquí hay un ejemplo de archivo .gitattributes. Puedes usarlo como una plantilla para tus repositorios:

# Esteblece el comportamiento predeterminado, en caso de que las personas no tengan configurado core.autocrlf.
* text=auto

# Declara explícitamente los archivos de texto que siempre quieres que estén normalizados y convertidos
# a finales de línea nativos en el control.
*.c text
*.h text

# Declara los archivos que siempre tendrán los finales de línea CRLF en el control.
*.sln text eol=crlf

# Denota todos los archivos que son absolutamente binarios y no deberían modificarse.
*.png binary
*.jpg binary

Notarás que los archivos coinciden con --*.c, *.sln, *.png--, sepado por un espacio, luego se proporcionará un parámetro-text, text eol=crlf, binary. Luego examinaremos algunos parámetros posibles a continuación.

`text=auto`
Git manejará los archivos de la manera en que considere que sea mejor. Esta es una buena opción predeterminada.
`text eol=crlf`
Git siempre convertirá los finales de línea a `CRLF` durante el control. Deberías usar esto para los archivos que deben conservar los finales `CRLF`, incluso en OSX o Linux.
`text eol=lf`
Git siempre convertirá los finales de línea a `LF` durante el control. Deberías usar esto para los archivos que deben conservar los finales LF, incluso en Windows.
`binary`
Git comprenderá que los archivos especificados no son de texto, y no debería tratar de cambiarlos. El parámetro `binary` también es un alias para `-text -diff`.

Actualizar un repositorio después de los finales de línea

Una vez que has establecido la opción core.autocrlf y confirmado un archivo .gitattributes, puedes descubrir que Git desea confirmar los archivos que no has modificado. En este punto, Git está dispuesto a cambiar los finales de línea de cada archivo por ti.

La mejor manera de configurar automáticamente los finales de línea del repositorio es realizar una copia de seguridad de tus archivos con Git, eliminar cada archivo en tu repositorio (excepto el directorio .git) y luego restaurar todos los archivos de una vez.

  1. Guarda los archivos actuales en Git, de manera que nada de tu trabajo se pierda.

    $ git add . -u
    $ git commit -m "Saving files before refreshing line endings"
  2. Agrega todos los archivos cambiados nuevamente y normaliza los finales de línea.

    $ git add . --renormalize
  3. Muestra los archivos reescritos, normalizados.

    $ git status
  4. Confirma los cambios en tu repositorio.

    $ git commit -m "Normalize all the line endings"

Leer más

Pregunta a una persona

¿No puedes encontrar lo que estás buscando?

Contáctanos