Tester avec des fichiers suivis par LFS
Dans cette étape finale, nous allons ajouter le fichier suivi par LFS à la zone de préparation (staging area) de Git et le valider (commit). Cela démontrera comment Git LFS gère le fichier différemment des fichiers normaux.
Tout d'abord, assurez-vous que vous êtes dans le bon répertoire :
cd ~/project/my-time-machine
Nous avons déjà créé le fichier large_image.png
et configuré Git LFS pour suivre les fichiers .png
dans les étapes précédentes. Maintenant, ajoutons le fichier à la zone de préparation en utilisant git add
:
git add large_image.png
Cette commande prépare le fichier pour le prochain commit. Git LFS intercepte cette opération pour large_image.png
car il correspond au modèle dans le fichier .gitattributes
. Au lieu d'ajouter tout le contenu du fichier à l'index Git, Git LFS ajoute un petit fichier "pointeur".
Vérifions l'état pour voir le fichier préparé :
git status
Vous devriez voir une sortie indiquant que large_image.png
est un nouveau fichier prêt à être validé :
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: .gitattributes
new file: large_image.png
Notez que le fichier .gitattributes
est également préparé car nous l'avons modifié à l'Étape 1.
Maintenant, validons les modifications :
git commit -m "Add LFS tracked image placeholder"
Vous devriez voir une sortie similaire à celle-ci :
[master (root-commit) abcdefg] Add LFS tracked image placeholder
2 files changed, X insertions(+)
create mode 100644 .gitattributes
create mode 100644 large_image.png
Le message de commit confirme que les fichiers .gitattributes
et large_image.png
ont été validés. Cependant, le contenu réel de large_image.png
n'est pas stocké directement dans le commit Git. Au lieu de cela, le commit stocke le petit fichier pointeur, et le contenu du gros fichier est géré par Git LFS.
Pour voir la différence, examinons le contenu du fichier tel qu'il est stocké dans Git en utilisant git show
. Cette commande affiche le contenu d'un fichier à un commit spécifique.
git show HEAD:large_image.png
Vous devriez voir une sortie similaire à celle-ci :
version https://git-lfs.github.com/spec/v1
oid sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
size 31
Ceci est le contenu du fichier pointeur, pas le texte réel "This is a large image file placeholder.". Cela démontre que Git stocke une référence au gros fichier, tandis que Git LFS gère le contenu réel du fichier.
Ceci est le concept central de Git LFS : maintenir le dépôt Git principal léger en stockant uniquement des pointeurs vers les gros fichiers, tandis que le contenu des gros fichiers est stocké séparément.