{"meta":{"title":"Configurar Git para manejar finales de línea","intro":"Para evitar problemas en tus diferencias, puedes configurar Git para manejar correctamente los finales de línea.","product":"Comienza","breadcrumbs":[{"href":"/es/get-started","title":"Comienza"},{"href":"/es/get-started/git-basics","title":"Aspectos básicos de Git"},{"href":"/es/get-started/git-basics/configuring-git-to-handle-line-endings","title":"Control de los finales de línea"}],"documentType":"article"},"body":"# Configurar Git para manejar finales de línea\n\nPara evitar problemas en tus diferencias, puedes configurar Git para manejar correctamente los finales de línea.\n\n## Acerca de los finales de línea\n\nCada vez que presiona <kbd>Intro</kbd> de su teclado, se inserta un carácter invisible denominado fin de línea. Los finales de línea se manejan de forma diferente en los distintos sistemas operativos.\n\nAl colaborar en proyectos con Git y GitHub, Git podría producir resultados inesperados si, por ejemplo, está trabajando en una máquina de Windows y el colaborador ha realizado un cambio en macOS.\n\nPuedes configurar Git para que maneje los fines de línea automáticamente y así puedas colaborar eficazmente con las personas que utilizan otros sistemas operativos.\n\n## Parámetros globales para finales de línea\n\nEl comando `git config core.autocrlf` se usa para cambiar cómo controla Git los finales de línea. Toma un solo argumento.\n\n<div class=\"ghd-tool mac\">\n\nEn macOS, simplemente pase `input` a la configuración. Por ejemplo:\n\n```shell\n$ git config --global core.autocrlf input\n# Configure Git to ensure line endings in files you checkout are correct for macOS\n```\n\n</div>\n\n<div class=\"ghd-tool windows\">\n\nEn Windows, simplemente pasa `true` a la configuración. Por ejemplo:\n\n```shell\n$ git config --global core.autocrlf true\n# Configure Git to ensure line endings in files you checkout are correct for Windows.\n# For compatibility, line endings are converted to Unix style when you commit files.\n```\n\n</div>\n\n<div class=\"ghd-tool linux\">\n\nEn Linux, simplemente pase `input` a la configuración. Por ejemplo:\n\n```shell\n$ git config --global core.autocrlf input\n# Configure Git to ensure line endings in files you checkout are correct for Linux\n```\n\n</div>\n\n## Configuración por repositorio\n\nOpcionalmente, puede configurar un archivo `.gitattributes` para administrar cómo lee Git los fines de línea en un repositorio concreto. Al confirmar este archivo en un repositorio, invalida el valor `core.autocrlf` de todos los colaboradores del repositorio. Esto garantiza un comportamiento consistente para todos los usuarios, sin importar su configuración y ambiente de Git.\n\nEl archivo `.gitattributes` se debe crear en la raíz del repositorio y confirmarse como cualquier otro archivo.\n\nUn archivo `.gitattributes` es similar a una tabla con dos columnas:\n\n* A la izquierda está el nombre del archivo que coincide con Git.\n* A la derecha está la configuración de fin de línea que Git debería usar para esos archivos.\n\n### Ejemplo\n\nEste es un archivo `.gitattributes` de ejemplo. Puedes usarlo como plantilla para tus repositorios:\n\n```text\n# Set the default behavior, in case people don't have core.autocrlf set.\n* text=auto\n\n# Explicitly declare text files you want to always be normalized and converted\n# to native line endings on checkout.\n*.c text\n*.h text\n\n# Declare files that will always have CRLF line endings on checkout.\n*.sln text eol=crlf\n\n# Denote all files that are truly binary and should not be modified.\n*.png binary\n*.jpg binary\n```\n\nObservará que los archivos se comparan (`*.c`, `*.sln`, `*.png`) separados por un espacio y, después, se les asigna un valor (`text`, `text eol=crlf`, `binary`). Revisaremos algunas configuraciones posibles a continuación.\n\n* \n              `text=auto` Git administrará los archivos de la manera que considere óptima. Esta es una buena opción predeterminada.\n\n*               `text eol=crlf` Git siempre convertirá los finales de línea a `CRLF` durante la restauración. Debe usar esto para los archivos que tienen que conservar los finales `CRLF`, incluso en OSX o Linux.\n\n* \n              `text eol=lf` Git siempre convertirá los finales de línea a `LF` durante el checkout. Deberías usar esto para los archivos que deben conservar los finales LF, incluso en Windows.\n\n* \n              `binary` Git comprenderá que los archivos especificados no son de texto y no debería intentar cambiarlos. El valor `binary` también es un alias para `-text -diff`.\n\n## Actualizar un repositorio después de los finales de línea\n\nDespués de establecer la opción `core.autocrlf` o confirmar un archivo `.gitattributes`, Git cambia automáticamente los finales de línea para que coincidan con la nueva configuración. Puedes encontrarte con que Git informa de cambios en archivos que no has modificado.\n\nPara asegurarte de que todos los finales de línea del repositorio coincidan con la nueva configuración, realiza una copia de seguridad de los archivos con Git y, a continuación, quita y restaura todos los archivos para normalizar los finales de línea.\n\n1. Antes de agregar o confirmar los cambios, comprueba que Git ha aplicado correctamente la configuración. Por ejemplo, Git determina automáticamente si los archivos de un repositorio son archivos binarios o de texto. Para evitar daños en los archivos binarios del repositorio, se recomienda marcar explícitamente los archivos como binarios en `.gitattributes`. Para más información, consulte en la documentación de Git [gitattributes: definición de atributos por ruta](https://www.git-scm.com/docs/gitattributes#_marking_files_as_binary).\n1. Para evitar la pérdida de los cambios locales en los archivos del repositorio, agrega y confirma los cambios pendientes mediante la ejecución de los siguientes comandos.\n\n   ```shell copy\n   git add . -u\n   git commit -m \"Saving files before refreshing line endings\"\n   ```\n\n1. Para actualizar todos los archivos de la rama actual para reflejar la nueva configuración, ejecuta el siguiente comando.\n\n   ```shell copy\n   git add --renormalize .\n   ```\n\n1. Para mostrar los archivos reescritos y normalizados, ejecuta el siguiente comando.\n\n   ```shell copy\n   git status\n   ```\n\n1. Opcionalmente, para confirmar los cambios pendientes en el repositorio, ejecuta el siguiente comando.\n\n   ```shell copy\n   git commit -m \"Normalize all the line endings\"\n   ```\n\n## Información adicional\n\n* \n              [Personalización de Git: Atributos de Git](https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes) en el libro Pro Git\n* \n              [git-config](https://git-scm.com/docs/git-config) en las páginas man de Git\n* \n              [Introducción: Configuración inicial de Git](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) en el libro Pro Git\n* \n              [Cuidado con el final de tu línea](http://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line/) de [Tim Clem](https://github.com/tclem)"}