Aquesta és una revisió antiga del document


git LFS

sudo apt install git-lfs
  • instalación cliente:
    git lfs install --local # si no se especifica --local, afecta a todos los repos de la sesión, con --local solo al actual
  • configuración:
    git lfs track # ver que seguimientos se estan realizando
    git lfs track "<pattern>" # puede ser directorio o tipo de archivo (entre comillas)
    • se realizan cambios en .gitattributes que se tienen que commitear
  • como en cualquer commit, se añaden los ficheros:
    git add <files>
  • problemes amb configuració ~/.ssh/config
  • git lfs env
  • .lfsconfig
  • git push --no-verify origin main
  • 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.
  • 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)».

Este es un problema muy común tras una migración. Lo que tienes ahora en Gitea son los Pointers (archivos de texto de ~3 líneas con el hash sha256), pero el almacenamiento de Gitea no contiene los objetos binarios reales.

Para solucionarlo, tienes que hacer un «LFS Push» desde una copia local que sí tenga los archivos originales.

  1. Asegúrate de tener los archivos en local
  2. Configurar el nuevo Gitea como remoto:
    git remote add nuevo-gitea ssh://git@git.fidmag.org:2222/usuario/repo.git
  3. Forzar la subida de todos los objetos LFS:
    git lfs push nuevo-gitea --all
  • tech/git/lfs.1775638732.txt.gz
  • Darrera modificació: 08/04/2026 01:58
  • per mate