should - Anula la elección de git de archivo binario a texto
git ignore line endings diff (3)
La forma en que los archivos se almacenan realmente en el repositorio de Git no es relevante para la forma en que se tratan cuando se muestran. Entonces el programa git diff
, cuando se le pide que compare dos archivos, primero obtiene ambos archivos completos del repositorio y luego ejecuta un algoritmo de diferencia en su contra.
Normalmente, git diff
busca los caracteres no imprimibles en los archivos y si parece que el archivo es un archivo binario, se niega a mostrar la diferencia. La razón de esto es que las diferencias entre archivos binarios probablemente no sean legibles por el ser humano y probablemente arruinen su terminal si se muestran.
Sin embargo, puede indicar a git diff
que siempre trate los archivos como texto usando la opción --text
. Puede especificar esto para un comando diff
:
git diff --text HEAD HEAD^ file.txt
Puede hacer que Git siempre use esta opción configurando un archivo .gitattributes
que contenga:
file.txt diff
El atributo diff
aquí significa:
Una ruta a la que se establece el atributo
diff
se trata como texto, incluso cuando contienen valores de bytes que normalmente nunca aparecen en los archivos de texto, como NUL.
He visto varias preguntas preguntando cómo hacer que git trate un archivo de texto como binario, pero aún no he visto lo opuesto:
¿Cómo cambio la elección de git de tratar un archivo de texto como binario? Tengo un archivo de texto donde en algunas cadenas de configuración se usa un EOT y ETX para separar partes de los parámetros de configuración.
Por ejemplo, el código fuente contiene líneas como esta:
INPUT ''ScrollRemote[EOT]no[ETX]NumDown[EOT]0[ETX]CalcWidth[EOT]no[ETX]MaxWidth[EOT]80[ETX]FetchOnReposToEnd[EOT]yes[ETX].....''
Mire los Atributos de Git : pueden ayudarle especificando que cierta extensión de archivo debe tratarse como texto.
Si está intentando comparar o fusionar archivos de texto y git dice que son archivos binarios, es posible que solo tengan una codificación diferente (por ejemplo, UTF-8 y ANSI). Ver la respuesta que di en esta publicación .