Comment vérifier si un dépôt Git utilise LFS

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à déterminer si un dépôt Git utilise Git Large File Storage (LFS). Nous explorerons les indicateurs clés de l'utilisation de LFS, en commençant par l'examen du fichier .gitattributes, qui est essentiel pour configurer le suivi LFS.

Vous utiliserez ensuite la commande git lfs env pour vérifier l'environnement et les paramètres LFS dans le dépôt. Enfin, nous testerons avec des fichiers suivis par LFS pour confirmer que LFS gère activement les gros fichiers comme prévu. Cette approche pratique vous fournira les compétences pratiques nécessaires pour identifier et comprendre l'intégration de LFS dans vos projets 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{{"Comment vérifier si un dépôt Git utilise LFS"}} git/git -.-> lab-560102{{"Comment vérifier si un dépôt Git utilise LFS"}} git/add -.-> lab-560102{{"Comment vérifier si un dépôt Git utilise LFS"}} git/status -.-> lab-560102{{"Comment vérifier si un dépôt Git utilise LFS"}} git/commit -.-> lab-560102{{"Comment vérifier si un dépôt Git utilise LFS"}} end

Vérifier l'existence du fichier .gitattributes

Dans cette étape, nous allons explorer comment Git LFS utilise un fichier spécial appelé .gitattributes pour suivre les gros fichiers. Ce fichier indique à Git quels fichiers doivent être gérés par LFS au lieu d'être stockés directement dans le dépôt Git.

Tout d'abord, assurons-nous que nous sommes dans le répertoire de notre projet. Ouvrez votre terminal et tapez :

cd ~/project/my-time-machine

Maintenant, créons un fichier factice que nous demanderons plus tard à Git LFS de suivre. Nous l'appellerons large_image.png.

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

Cette commande crée un fichier nommé large_image.png et y insère du texte. Dans un scénario réel, il s'agirait d'un gros fichier binaire comme une image, une vidéo ou une archive.

Ensuite, nous devons indiquer à Git LFS de suivre ce type de fichier. Nous le faisons en utilisant la commande git lfs track. Cette commande crée également automatiquement ou met à jour le fichier .gitattributes dans votre dépôt.

git lfs track "*.png"

Vous devriez voir une sortie similaire à celle-ci :

Tracking "*.png"

Cette commande indique à Git LFS de suivre tous les fichiers avec l'extension .png. Elle ajoute également une entrée au fichier .gitattributes.

Maintenant, examinons le contenu du fichier .gitattributes pour voir ce qui a été ajouté.

cat .gitattributes

Vous devriez voir une sortie similaire à celle-ci :

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

Cette ligne dans le fichier .gitattributes est la clé qui indique à Git d'utiliser LFS pour les fichiers .png. Elle spécifie que pour les fichiers correspondant au modèle *.png, Git doit appliquer le filtre lfs pour la comparaison, la fusion et le stockage. La partie -text garantit que Git ne tente pas de traiter les fichiers binaires comme du texte.

Comprendre le fichier .gitattributes est essentiel pour utiliser efficacement Git LFS. C'est ainsi que vous configurez quels types de gros fichiers sont gérés par LFS, ce qui permet de garder votre dépôt Git principal petit et rapide.

Exécuter git lfs env pour vérifier LFS

Dans cette étape, nous utiliserons la commande git lfs env pour vérifier l'environnement Git LFS et confirmer qu'il est correctement configuré dans notre dépôt. Cette commande fournit des informations utiles sur l'installation et la configuration de Git LFS.

Assurez-vous que vous êtes toujours dans le répertoire de votre projet :

cd ~/project/my-time-machine

Maintenant, exécutez la commande git lfs env :

git lfs env

Vous devriez voir une sortie similaire à celle-ci (la sortie exacte peut varier légèrement en fonction de la version de Git LFS et de la configuration du système) :

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.

Cette sortie fournit de nombreuses informations, notamment :

  • La version de Git LFS utilisée.
  • La version de Git utilisée.
  • Les points d'accès LFS (où les fichiers LFS seraient envoyés/reçus, bien que nous n'utilisions pas de dépôt distant dans ce laboratoire).
  • Les répertoires locaux où Git LFS stocke ses données dans le répertoire .git.
  • L'utilisation de l'espace disque par les objets LFS (actuellement très faible car nous n'avons pas encore ajouté de gros fichiers).
  • La confirmation que Git LFS est initialisé dans ce dépôt.

Exécuter git lfs env est un bon moyen de vérifier rapidement que Git LFS est installé et configuré correctement dans votre dépôt actuel. Cela vous aide à comprendre où LFS stocke ses données et confirme que les hooks et les filtres nécessaires sont en place.

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.

Résumé

Dans ce laboratoire, nous avons appris à vérifier si un dépôt Git utilise Git LFS. Nous avons commencé par comprendre le rôle du fichier .gitattributes, qui est essentiel pour configurer Git LFS. Nous avons créé un fichier factice et utilisé git lfs track pour indiquer à Git LFS de gérer les fichiers avec une extension spécifique, en observant comment cette commande met automatiquement à jour le fichier .gitattributes avec la configuration nécessaire. Nous avons ensuite examiné le contenu du fichier .gitattributes pour voir l'entrée ajoutée par git lfs track, en comprenant la signification des attributs filter=lfs, diff=lfs, merge=lfs et -text.

Nous avons également exploré la commande git lfs env comme une autre méthode pour vérifier la présence et la configuration de Git LFS dans un dépôt. Cette commande fournit des informations détaillées sur l'environnement Git LFS, y compris la version, les paramètres du dépôt et les modèles de fichiers suivis, offrant un aperçu complet de la configuration de LFS. Enfin, nous avons appris à tester le suivi LFS en ajoutant et en validant un fichier qui correspond au modèle configuré, confirmant que Git LFS gère correctement le gros fichier au lieu de stocker tout son contenu dans le dépôt Git principal.