Cómo comprobar si un repositorio de Git utiliza LFS

GitGitBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo determinar si un repositorio de Git está utilizando Git Large File Storage (LFS). Exploraremos los indicadores clave del uso de LFS, comenzando por examinar el archivo .gitattributes, que es fundamental para configurar el seguimiento de LFS.

Luego, utilizarás el comando git lfs env para verificar el entorno y la configuración de LFS dentro del repositorio. Finalmente, realizaremos pruebas con archivos rastreados por LFS para confirmar que LFS está administrando activamente los archivos grandes como se espera. Este enfoque práctico te proporcionará las habilidades prácticas para identificar y comprender la integración de LFS en tus proyectos de Git.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git/SetupandConfigGroup -.-> git/config("Set Configurations") git/SetupandConfigGroup -.-> git/git("Show Version") git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") subgraph Lab Skills git/config -.-> lab-560102{{"Cómo comprobar si un repositorio de Git utiliza LFS"}} git/git -.-> lab-560102{{"Cómo comprobar si un repositorio de Git utiliza LFS"}} git/add -.-> lab-560102{{"Cómo comprobar si un repositorio de Git utiliza LFS"}} git/status -.-> lab-560102{{"Cómo comprobar si un repositorio de Git utiliza LFS"}} git/commit -.-> lab-560102{{"Cómo comprobar si un repositorio de Git utiliza LFS"}} end

Verificar la existencia del archivo .gitattributes

En este paso, exploraremos cómo Git LFS utiliza un archivo especial llamado .gitattributes para rastrear archivos grandes. Este archivo le indica a Git qué archivos deben ser manejados por LFS en lugar de ser almacenados directamente en el repositorio de Git.

Primero, asegúrate de estar en el directorio de tu proyecto. Abre tu terminal y escribe:

cd ~/project/my-time-machine

Ahora, creemos un archivo ficticio que luego le diremos a Git LFS que rastree. Lo llamaremos large_image.png.

echo "This is a large image file placeholder." > large_image.png

Este comando crea un archivo llamado large_image.png y coloca algún texto dentro. En un escenario real, este sería un archivo binario grande como una imagen, un video o un archivo comprimido.

A continuación, necesitamos decirle a Git LFS que rastree este tipo de archivos. Lo hacemos utilizando el comando git lfs track. Este comando también crea o actualiza automáticamente el archivo .gitattributes en tu repositorio.

git lfs track "*.png"

Deberías ver una salida similar a esta:

Tracking "*.png"

Este comando le dice a Git LFS que rastree todos los archivos con la extensión .png. También agrega una entrada al archivo .gitattributes.

Ahora, echemos un vistazo al contenido del archivo .gitattributes para ver qué se agregó.

cat .gitattributes

Deberías ver una salida similar a esta:

*.png filter=lfs diff=lfs merge=lfs -text

Esta línea en el archivo .gitattributes es la clave que le dice a Git que use LFS para los archivos .png. Especifica que para los archivos que coincidan con el patrón *.png, Git debe aplicar el filtro lfs para la comparación, fusión y almacenamiento. La parte -text asegura que Git no intente tratar los archivos binarios como texto.

Comprender el archivo .gitattributes es fundamental para utilizar Git LFS de manera efectiva. Es así como configuras qué tipos de archivos grandes son administrados por LFS, manteniendo tu repositorio principal de Git pequeño y rápido.

Ejecutar git lfs env para verificar LFS

En este paso, utilizaremos el comando git lfs env para verificar el entorno de Git LFS y confirmar que está configurado correctamente dentro de nuestro repositorio. Este comando proporciona información útil sobre la instalación y configuración de Git LFS.

Asegúrate de seguir estando en el directorio de tu proyecto:

cd ~/project/my-time-machine

Ahora, ejecuta el comando git lfs env:

git lfs env

Deberías ver una salida similar a esta (la salida exacta puede variar ligeramente dependiendo de la versión de Git LFS y la configuración del sistema):

git-lfs/3.x.x (Linux; zsh)
git version 2.34.1

Endpoint=
  https://github.com/labex/my-time-machine.git/info/lfs (auth=none)
Endpoint (SSH)=
  [email protected]:labex/my-time-machine.git/info/lfs (auth=none)

LocalWorkingDir=/home/labex/project/my-time-machine
LocalGitDir=/home/labex/project/my-time-machine/.git
LocalGitStorageDir=/home/labex/project/my-time-machine/.git/lfs
LocalMediaDir=/home/labex/project/my-time-machine/.git/lfs/objects
LocalRecentObjectsDir=/home/labex/project/my-time-machine/.git/lfs/objects/sha256/recent
LocalRecentObjectsLogDir=/home/labex/project/my-time-machine/.git/lfs/objects/sha256/recent/logs
LocalTmpDir=/home/labex/project/my-time-machine/.git/lfs/tmp
LocalTriggers=

Disk space utilization:
  du -s -h .git/lfs
  4.0K    .git/lfs

Git LFS initialized.

Esta salida proporciona mucha información, incluyendo:

  • La versión de Git LFS que se está utilizando.
  • La versión de Git que se está utilizando.
  • Los puntos finales (endpoints) de LFS (desde donde se subirían o descargarían los archivos LFS, aunque no usaremos un repositorio remoto en este laboratorio).
  • Los directorios locales donde Git LFS almacena sus datos dentro del directorio .git.
  • El uso de espacio en disco por los objetos LFS (actualmente muy pequeño ya que aún no hemos agregado ningún archivo grande).
  • Confirmación de que Git LFS está inicializado en este repositorio.

Ejecutar git lfs env es una buena manera de verificar rápidamente que Git LFS está instalado y configurado correctamente en tu repositorio actual. Te ayuda a entender dónde LFS está almacenando sus datos y confirma que los hooks y filtros necesarios están en su lugar.

Probar con archivos rastreados por LFS

En este último paso, agregaremos el archivo rastreado por LFS al área de preparación (staging area) de Git y lo confirmaremos (haremos un commit). Esto demostrará cómo Git LFS maneja el archivo de manera diferente a los archivos normales.

Primero, asegúrate de estar en el directorio correcto:

cd ~/project/my-time-machine

Ya hemos creado el archivo large_image.png y configurado Git LFS para rastrear archivos .png en los pasos anteriores. Ahora, agreguemos el archivo al área de preparación utilizando git add:

git add large_image.png

Este comando prepara el archivo para el próximo commit. Git LFS intercepta esta operación para large_image.png porque coincide con el patrón en .gitattributes. En lugar de agregar todo el contenido del archivo al índice de Git, Git LFS agrega un pequeño archivo "puntero".

Veamos el estado para ver el archivo preparado:

git status

Deberías ver una salida que indique que large_image.png es un nuevo archivo listo para ser confirmado:

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   .gitattributes
        new file:   large_image.png

Observa que .gitattributes también está preparado porque lo modificamos en el Paso 1.

Ahora, confirmemos los cambios:

git commit -m "Add LFS tracked image placeholder"

Deberías ver una salida similar a esta:

[master (root-commit) abcdefg] Add LFS tracked image placeholder
 2 files changed, X insertions(+)
 create mode 100644 .gitattributes
 create mode 100644 large_image.png

El mensaje del commit confirma que tanto .gitattributes como large_image.png fueron confirmados. Sin embargo, el contenido real de large_image.png no se almacena directamente en el commit de Git. En cambio, el commit almacena el pequeño archivo puntero, y el contenido del archivo grande es gestionado por Git LFS.

Para ver la diferencia, echemos un vistazo al contenido del archivo tal como está almacenado en Git utilizando git show. Este comando muestra el contenido de un archivo en un commit específico.

git show HEAD:large_image.png

Deberías ver una salida similar a esta:

version https://git-lfs.github.com/spec/v1
oid sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
size 31

Este es el contenido del archivo puntero, no el texto real "This is a large image file placeholder.". Esto demuestra que Git está almacenando una referencia al archivo grande, mientras que Git LFS está gestionando el contenido real del archivo.

Este es el concepto central de Git LFS: mantener el repositorio principal de Git ligero almacenando solo punteros a archivos grandes, mientras que el contenido de los archivos grandes se almacena por separado.

Resumen

En este laboratorio, aprendimos cómo comprobar si un repositorio de Git utiliza Git LFS. Comenzamos entendiendo el papel del archivo .gitattributes, que es crucial para configurar Git LFS. Creamos un archivo ficticio y usamos git lfs track para indicar a Git LFS que gestione archivos con una extensión específica, observando cómo este comando actualiza automáticamente el archivo .gitattributes con la configuración necesaria. Luego examinamos el contenido del archivo .gitattributes para ver la entrada agregada por git lfs track, comprendiendo el significado de los atributos filter=lfs, diff=lfs, merge=lfs y -text.

También exploramos el comando git lfs env como otro método para verificar la presencia y configuración de Git LFS dentro de un repositorio. Este comando proporciona información detallada sobre el entorno de Git LFS, incluyendo la versión, la configuración del repositorio y los patrones de archivos rastreados, ofreciendo una visión general completa de cómo está configurado LFS. Finalmente, aprendimos cómo probar el seguimiento de LFS agregando y confirmando un archivo que coincide con el patrón configurado, confirmando que Git LFS maneja correctamente el archivo grande en lugar de almacenar su contenido completo en el repositorio principal de Git.