= .git* - .gitattributes
indica la naturaleza de cierto tipos de archivos para optimizar el control de cambios.
*.tgz binary
code/*.zip binary
* ''diff'':Le indica a Git cómo comparar dos versiones del archivo.
* Sin esto, Git intentaría comparar los archivos binarios (lo cual es inútil y consume mucha CPU).
* Con diff=lfs, Git simplemente compara los hashes (huellas digitales) de los punteros para saber si el archivo ha cambiado o no.
* ''merge'':Define qué hacer si dos personas modifican el mismo archivo al mismo tiempo.
* Los archivos binarios no se pueden "mezclar" (no puedes fusionar media foto con otra media foto).
* Este parámetro le dice a Git que, en caso de conflicto, no intente un auto-merge. Normalmente, Git LFS simplemente te pedirá que elijas una de las dos versiones.
* ''-text'':El signo menos (-) delante de text significa desactivar el atributo de texto.
* Evita que Git intente normalizar los finales de línea (LF vs CRLF).
* Si Git intentara cambiar un "salto de línea" dentro de un video o un ejecutable para adaptarlo a Windows o Linux, corrompería el archivo. Con -text le dices: "No toques el contenido, trátalo como datos binarios puros".
* ''binary'': La palabra binary es en realidad un macro (un atajo). Cuando escribes binary, Git lo traduce internamente como si hubieras escrito: ''-text -diff''. Es decir: "No intentes arreglar los saltos de línea (''-text'') y no intentes mostrar las diferencias de contenido (''-diff'')".
== renormalize
# 1. Definir el atributo
echo "*.bin binary" >> .gitattributes
# 2. Forzar a Git a tratar los existentes como binarios
git add --renormalize .
# 3. Tu script habitual
git commit -m "Update attributes and files"
git push origin master
== LFS (filter)
* indicar que ficheros son tratados como LFS:*.png filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs binary
* ''filter'': Es el parámetro más importante. Le dice a Git que debe usar el "filtro" de LFS al mover archivos entre el disco y el área de preparación (staging).
* Al hacer commit: El filtro intercepta el archivo, lo mueve a la carpeta LFS y crea un pequeño archivo de texto (puntero) en su lugar.
* Al hacer checkout: El filtro busca el archivo real en la carpeta LFS (o lo descarga de Gitea) y lo pone en tu carpeta de trabajo.