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.