¿Cuál es la ventaja de git lfs?

4 minutos de lectura

Github tiene un límite en empujar archivo grande. Entonces, si desea enviar un archivo grande a su repositorio, debe usar Git LFS.

Sé que es una mala idea agregar un archivo binario en git repo. Pero si estoy usando gitlab en mi servidor y no hay límite de tamaño de archivo en un repositorio, y no me importa que el tamaño del repositorio sea muy grande en mi servidor. En esta condición, ¿cuál es la ventaja de git lfs?git clone o git checkout sera mas rapido?

  • ¿Has comparado la velocidad de conexión?

    – SOFe

    23 de febrero de 2016 a las 10:52

  • No. Estoy tratando de resolverlo en principio.

    – Sanster

    23 de febrero de 2016 a las 11:55

  • Con git-lfs, la clonación será MUCHO más rápida. Pago un poco más, el tiempo para descargar los archivos puestos en lfs. Pero si REALMENTE necesita verificar algunos binarios, lfs es la forma de hacerlo.

    – Felipe

    23 de febrero de 2016 a las 18:17

  • atlassian.com/git/tutorials/git-lfs

    – Benny

    08/09/2017 a las 19:09

  • Debe distinguir claramente el caso de uso si los archivos grandes se modifican (muy) o solo activos estáticos en el repositorio. En caso de que un archivo grande solo se agregue una vez, nunca se modifique, no hay uso de LFS. En caso de que se modifiquen los archivos grandes, se aplicará la respuesta aceptada

    – g.pickardou

    5 de febrero de 2019 a las 16:46


avatar de usuario
Matthieu Moy

Una especificidad de Git (y otros sistemas distribuidos) en comparación con los sistemas centralizados es que cada repositorio contiene toda la historia del proyecto. Suponga que crea un archivo de 100 MB, lo modifica 100 veces de una manera que no se comprime bien. Terminará con un repositorio de 10 GB. Esto significa que cada clon descargará 10 GB de datos, consumirá 10 GB de espacio en disco en cada máquina en la que esté haciendo un clon. Lo que es aún más frustrante: aún tendría que descargar estos 10 GB de datos incluso si git rm los archivos grandes.

Poner archivos grandes en un sistema separado como git-lfs le permite almacenar solo punteros a cada versión del archivo en el repositorio, por lo tanto, cada clon solo descargará una pequeña parte de los datos para cada revisión. El pago descargará solo la versión que está utilizando, es decir, 100 MB en el ejemplo anterior. Como resultado, estaría usando espacio en disco en el servidor, pero ahorrando mucho ancho de banda y espacio en disco en el cliente.

Además de esto, el algoritmo utilizado por git gc (internamente, git repack) no siempre funciona bien con archivos grandes. Las versiones recientes de Git progresaron en esta área y debería funcionar razonablemente bien, pero el uso de un repositorio grande con archivos grandes puede causarle problemas (como no tener suficiente RAM para volver a empaquetar su repositorio).

  • Siempre dije que ralentizaba el repositorio con el tiempo, ¡pero este es un gran ejemplo concreto! ¡Gracias por mostrar cómo se combinan el tamaño y el consumo de recursos!

    – CTS_AE

    3 de mayo de 2019 a las 0:44

  • Entonces, ¿usar LFS solo es bueno si modifica esos archivos grandes con frecuencia? ¿Qué pasa si quiero mantener algunos paquetes de software en el repositorio que uso pero nunca modifico?

    – sanjivgupta

    12 de abril de 2020 a las 3:11

  • @sanjivgupta En ese escenario, LFS tendrá muy pocos beneficios. Si sigue el proceso de gitlfs, marcaría los archivos como binarios; entonces si se accede al archivo con git diff evitará que se bloquee potencialmente debido a un archivo grande. Además, si decide actualizar uno de esos paquetes en el futuro, obtendrá los beneficios previstos de lfs al clonar solo las últimas versiones para la rama desde la que está clonando. Dicho todo esto, debe usar un administrador de paquetes para ese escenario siempre que sea posible.

    – Marcos Clark

    22 de abril de 2020 a las 21:46

  • Hola. Estoy usando GIT LFS, pero cada vez que hago un cambio en la escena y lo confirmo, se guarda completo en GIT LFS (250 MB) y, por lo tanto, no puedo trabajar así. No entiendo qué ventaja tiene usar GIT LFS cuando las escenas de Unity se guardan como un todo y en equipos más grandes, eso requeriría terabytes de almacenamiento GITLAB.

    – Adam Beňko

    23 de diciembre de 2021 a las 10:42

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad