tipos tag practices etiquetas describe delete create best git core.autocrlf

etiquetas - git tags best practices



¿Hay una manera de determinar los finales de línea en un repositorio git existente? (3)

¿Hay una manera de determinar los finales de línea en un repositorio de git existente?

Si clono un repositorio existente, ¿cómo puedo determinar qué core.autocrlf fue utilizado por el creador?

Todavía no estoy seguro de cuál es la mejor configuración para core.autocrlf, por ejemplo, en un cuadro de Windows (ya que hay varias opiniones: Distribuir la configuración de git con el código o https://help.github.com/articles/dealing-with-line-endings )

Pregunta extra: ¿Puede determinar en Windows (con herramientas estándar) si un repositorio tiene finales de línea mixtos (por configuración incorrecta de core.autocrlf) a través de todas las confirmaciones?


La mejor práctica para los finales de línea está aquí: https://.com/a/10855862

Para determinar los finales de línea en un repositorio git existente:

  1. Establezca core.autocrlf en false , para que no cambie los finales de los archivos mientras se transmiten.
  2. git clone su repo por ej. en un nuevo directorio.
  3. Utilice el editor de texto que muestra los finales de línea para abrir los archivos (por ejemplo, PHPStorm). Debe abrir varios archivos ya que los finales de línea pueden diferir de un archivo a otro.

No puede determinar qué core.autocrlf fue usado por el creador ya que es configuración local, excepto que el repositorio tiene el archivo .gitattributes.

En Windows, si no está utilizando .gitattributes, solo use core.autocrlf true como está configurado de forma predeterminada.


Todavía mantendría esa configuración ( core.autocrlf ) en false , como explico en " Distribuir la configuración de git con el código " que menciona, y usa la directiva eol gitattributes para un control más detallado.

Dicho esto, para detectar un final de línea mixta:

  • establece core.autocrlf en true
  • git clone su repo
  • git diff : si las diferencias son visibles justo después de su clon ... algunas conversiones automáticas de eol simplemente tuvieron lugar en el árbol de trabajo.

Actualización 2016 (4 años después): una forma más moderna de detectar cambios en eol :

git -c color.diff.whitespace="red reverse" diff -R -- afile


Para verificar qué finales de línea se confirmaron realmente en el repositorio (independientemente de su configuración core.autocrlf ), intente lo siguiente:

git grep -I --files-with-matches --perl-regexp ''/r'' HEAD

( -I significa que los archivos binarios no deben ser vistos.)