tech:git:dotfiles:gitattributes

.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)».
# 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
  • 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.
  • tech/git/dotfiles/gitattributes.txt
  • Darrera modificació: 04/05/2026 07:12
  • per mate