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.
Versión del artículo: GitHub.com

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.

En este artículo

Every time you press return on your keyboard you insert an invisible character called a line ending. Different operating systems handle line endings differently.

When you're collaborating on projects with Git and GitHub, Git might produce unexpected results if, for example, you're working on a Windows machine, and your collaborator has made a change in OS X.

You can configure Git to handle line endings automatically so you can collaborate effectively with people who use different operating systems.

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
# Configure Git to ensure line endings in files you checkout are correct for OS X

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

$ git config --global core.autocrlf true
# Configure Git to ensure line endings in files you checkout are correct for Windows.
# For compatibility, line endings are converted to Unix style when you commit files.

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

$ git config --global core.autocrlf input
# Configure Git to ensure line endings in files you checkout are correct for Linux

Parámetros por repositorio

Optionally, you can configure a .gitattributes file to manage how Git reads line endings in a specific repository. When you commit this file to a repository, it overrides the core.autocrlf setting for all repository contributors. This ensures consistent behavior for all users, regardless of their Git settings and environment.

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. You can use it as a template for your repositories:

# 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

You'll notice that files are matched—*.c, *.sln, *.png—, separated by a space, then given a setting—text, text eol=crlf, binary. We'll go over some possible settings below.

  • text=auto Git will handle the files in whatever way it thinks is best. Esta es una buena opción predeterminada.

  • text eol=crlf Git will always convert line endings to CRLF on checkout. Deberías usar esto para los archivos que deben conservar los finales CRLF, incluso en OSX o Linux.

  • text eol=lf Git will always convert line endings to LF on checkout. Deberías usar esto para los archivos que deben conservar los finales LF, incluso en Windows.

  • binary Git will understand that the files specified are not text, and it should not try to change them. El parámetro binario también es un alias para text -diff.

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

When you set the core.autocrlf option or commit a .gitattributes file, you may find that Git reports changes to files that you have not modified. Git has changed line endings to match your new configuration.

To ensure that all the line endings in your repository match your new configuration, backup your files with Git, delete all files in your repository (except the .git directory), then restore the files all at once.

  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