Accéder au contenu principal

Présentation du stockage de fichiers volumineux (LFS) de Git

Commencez à utiliser Git Large File Storage (LFS) dans vos propres dépôts pour faciliter la gestion des fichiers binaires volumineux.
Actualisé 25 mars 2025  · 9 min de lecture

Git est un outil de contrôle de version largement utilisé pour aider à gérer les projets de développement de logiciels, les flux de travail en science des données et même les dépôts de documentation. Cependant, le système Git traditionnel présente des limites lorsqu'il s'agit de traiter des fichiers volumineux. Les fichiers volumineux seront dupliqués à chaque livraison, ce qui entraînera un gonflement du référentiel et un ralentissement des flux de travail en raison de la nécessité de copier plusieurs copies de fichiers volumineux lors de l'extraction des modifications. C'est pourquoi la gestion de fichiers volumineux avec Git peut devenir inefficace pour les raisons suivantes :

  • Grande taille du référentiel: Le stockage de fichiers volumineux directement dans un dépôt Git augmente sa taille globale, ce qui ralentit les opérations de clonage et de récupération, en particulier lorsque vous travaillez sur un dépôt distant qui peut nécessiter le téléchargement de fichiers vers l'amont ou vers l'aval.
  • Stockage et gestion des versions inefficaces: Chaque fois qu'un fichier volumineux est modifié, Git enregistre une nouvelle version dans son historique, ce qui entraîne un gonflement rapide du référentiel.
  • Problèmes de performance: Avec un dépôt volumineux, les opérations Git (par exemple, le clonage, l'extraction, la poussée) deviennent beaucoup plus lentes et nécessitent davantage de stockage.

Dans ce guide, nous allons examiner en profondeur le stockage de fichiers volumineux dans Git (Git LFS), qui est une extension de Git permettant de gérer les fichiers volumineux dans votre référentiel. Il nous permet de stocker plus efficacement les modifications apportées à des fichiers volumineux sans duplication ou stockage de fichiers supplémentaires. Vous devriez l'utiliser lorsque vous prévoyez d'avoir des fichiers binaires volumineux dans votre dépôt. Je commencerai par expliquer plus en détail ce qu'il est, comment il fonctionne, quand l'utiliser et comment le mettre en place de manière efficace.

Si vous êtes novice en matière de Git, consultez notre guide sur Comment apprendre Git et Cours d'introduction à Git.

Qu'est-ce que Git LFS ?

Git Large File Storage (Git LFS) est une extension de Git qui améliore la gestion des fichiers volumineux.  

Il modifie la façon dont Git gère la récupération et le clonage en ajoutant une fonctionnalité à Git pour récupérer paresseusement les données d'un dépôt distant et en ajoutant une fonctionnalité intelligente de gestion de fichiers à Git. 

Pour le reste, l'expérience de l'utilisateur est transparente et identique à celle d'un Git normal.

En quoi Git LFS diffère du cursus Git standard

Dans Git traditionnel, nous stockons l'intégralité de l'historique du dépôt dans le répertoire .git. Il s'agit des fichiers texte qui ont été modifiés au fil du temps. En outre, des référentiels entiers sont téléchargés lorsque nous appelons git fetch ou git clone afin que tous les fichiers soient facilement accessibles. L'utilisation de Git LFS modifie certaines choses. 

Tout d'abord, Git LFS remplace les fichiers volumineux par des pointeurs légers vers le stockage distant, ce qui réduit la nécessité de stocker chaque fichier. Deuxièmement, les fichiers volumineux ne sont téléchargés qu'au moment de l'enregistrement dans la branche, ce qui signifie que nous ne téléchargeons les fichiers volumineux que lorsque nous sommes prêts à travailler dessus. 

Enfin, il gère le stockage de votre référentiel local afin de nettoyer les anciennes versions des fichiers et de maintenir un environnement de travail propre.

Comment fonctionne Git LFS ?

Git LFS utilise un mécanisme de stockage basé sur des pointeurs. Comme indiqué précédemment, lorsque vous spécifiez un fichier pour le cursus LFS, Git LFS le remplace par un fichier pointeur dans le référentiel et place également une copie locale dans le cache. 

Lorsque vous repoussez des commits, le cache local est mis à jour dans un magasin distant (par exemple, GitHub, GitLab, les serveurs LFS de Bitbucket). S'il y a des changements et que vous passez à la caisse, ces changements mettent à jour votre cache local pour vous fournir la copie de travail la plus récente. 

Si vous souhaitez avoir un aperçu de l'un des dépôts distants les plus populaires, GitHub, consultez ce cours d'introduction à GitHub.

L'utilisation de Git LFS présente de nombreux avantages. La taille des référentiels est ainsi réduite et gérable. Il améliore également les performances des équipes qui travaillent avec des fichiers volumineux. En outre, en évitant la duplication inutile de fichiers volumineux, il permet de gérer la taille de votre référentiel local.

Configuration de Git LFS

Avant d'utiliser Git LFS, il y a quelques étapes à franchir. Il s'agit d'un processus relativement simple qui implique l'installation de l'extension. Si vous disposez de référentiels existants, vous devrez les migrer. Si vous créez un nouveau dépôt, vous pouvez simplement lancer Git LFS.

Installation de Git LFS

Pour utiliser Git LFS, vous devez l'installer sur votre système. Le plus simple est d'aller sur le site web de git-lfs et d'installer les fichiers. Une fois que vous l'avez fait, vous devez exécuter git lfs install une fois dans votre console de commande pour initialiser et installer complètement Git LFS.

Utilisation de Git LFS

Une fois installé, vous devrez vous assurer que Git LFS est configuré pour chaque dépôt.  Des trackers Git distants différents (par exemple GitHub vs Bitbucket) auront des étapes légèrement différentes. Il est préférable de suivre les étapes recommandées pour votre tracker distant Git. À un niveau élevé, si vous initialisez un nouveau référentiel, vous pouvez exécuter git lfs install dans ce référentiel pour initialiser les hooks puis ajouter des fichiers au cursus. Si vous avez un dépôt existant, vous pouvez utiliser git lfs migrate et suivre les procédures de nettoyage du répertoire .git :

git reflog expire --expire-unreachable=now --all
git gc --prune=now

Utiliser Git LFS dans un projet

Passons en revue quelques-unes des utilisations de Git LFS dans un projet. Nous couvrirons les étapes du cursus, de la validation, du clonage et de l'extraction de fichiers volumineux d'un dépôt Git LFS.

Cursus des fichiers volumineux (git lfs track)

Pour commencer à curer des types de fichiers spécifiques, nous pouvons utiliser la commande git lfs track . Par exemple, si je voulais suivre des fichiers CSV, j'écrirais la commande comme suit : git lfs track "*.csv". Cela ajoute également des informations à notre fichier .gitattributes pour s'assurer que nous utilisons Git LFS pour ce fichier particulier. Nous devons maintenant pousser notre fichier .gitattributes en premier pour nous assurer que nous suivons correctement les fichiers LFS.

git add .gitattributes
git commit -m "Adding LFS .gitattributes"
git push origin main

Ajout et validation de fichiers volumineux

Après avoir ajouté le cursus, vous pouvez l'ajouter et le valider comme d'habitude :

git add largefile.csv
git commit -m "Adding large file with Git LFS"
git push origin main

En coulisses, Git LFS stocke le fichier séparément et le remplace par un pointeur dans le référentiel. L'expérience devrait être relativement transparente.

Cloner des dépôts avec Git LFS (git lfs clone)

Si vous avez une version plus récente de Git (>= 2.3.0), la commande git clone devrait automatiquement fonctionner pour vos fichiers LFS et non-LFS. Si vous utilisez une version plus ancienne de Git, vous devrez utiliser la commande spécifique git lfs clone. Le fonctionnement est différent de celui de votre clone habituel, car il se réfère aux informations du pointeur pour les fichiers volumineux et ne clone que la copie de travail de chaque fichier volumineux. Pour plus d'informations sur le clonage dans Git, consultez le tutoriel suivant sur Git Clone Branch.

Extraction de fichiers volumineux (git lfs pull)

Si vous souhaitez récupérer et extraire vos gros fichiers LFS de votre référentiel, vous pouvez utiliser la fonction git lfs pull. Ceci est distinct d'un simple git pull qui n'extraira que les fichiers git. 

Voici un exemple de flux de travail :

git checkout main # check out your main branch 
git pull # pull latest git files from the remote, for this branch 
git lfs pull # pull latest git lfs files from the remote, for this branch

Meilleures pratiques pour l'utilisation de Git LFS

Si Git LFS est une excellente solution, elle peut néanmoins s'accompagner de sa propre série de problèmes et n'est pas conçue pour être une solution universelle. Veillez à respecter les bonnes pratiques suivantes lors de l'utilisation de Git LFS afin d'en tirer le meilleur parti :

  • N'utilisez Git LFS que pour les fichiers binaires volumineux, et non pour le code ou les petits fichiers texte.
  • Élaguez régulièrement les fichiers inutiles à l'aide de : git lfs prune
  • Évitez le cursus de répertoires entiersqui peut entraîner des problèmes de performance et de gonflement.
  • Assurez-vous que tous les collaborateurs ont installé Git LFS pour éviter les fichiers manquants.

Si vous suivez ces lignes directrices générales, Git LFS sera un outil formidable pour vous !

Problèmes courants et comment les résoudre

Comme Git LFS est une extension de Git, il s'accompagne de son propre lot de problèmes. C'est d'autant plus vrai qu'il s'appuie sur des dépôts distants qui posent leurs propres problèmes. Voici quelques problèmes courants que vous pouvez rencontrer lors de l'utilisation de Git LFS et leurs solutions.

Problèmes d'authentification Git LFS

Il existe de nombreuses façons de rencontrer des problèmes d'authentification avec Git LFS. Pour vous assurer que vous disposez des bonnes informations d'identification, vérifiez les points suivants :

  • Utilisez la configuration SSH correcte avec git config lfs.url ssh://
  • Curus que vous avez un accès en lecture/écriture à la branche parente car Git LFS suit souvent la branche parente.
  • Essayez de faire une récupération/clonage propre à partir du dépôt distant entièrement

Si vous continuez à rencontrer des problèmes et que vous n'êtes pas l'administrateur, vérifiez auprès de la personne qui possède le projet si elle peut vous aider à obtenir des autorisations.

Limites et quotas de stockage de fichiers volumineux

Les services peuvent avoir des devis sur le stockage Git LFS. Par exemple, GitHub a une limite de 2 Go pour les utilisateurs Free et Pro, avec une limite de 5 Go par fichier pour les utilisateurs du cloud Enterprise. Assurez-vous que vous ne téléchargez pas de fichiers plus volumineux que la limite de votre service afin d'éviter les erreurs.

Migrer des dépôts existants pour utiliser Git LFS

Si un référentiel contient déjà des fichiers volumineux, migrez-les en utilisant :

git lfs migrate import --include="*.filetype"

Cette mesure remplace rétroactivement les fichiers volumineux par des pointeurs LFS. 

Conclusion

Git LFS est un outil essentiel pour gérer efficacement les fichiers volumineux tout en conservant des dépôts performants et légers. En tirant parti de Git LFS, les développeurs peuvent gérer correctement leurs fichiers de dépôt les plus volumineux. Tant que vous suivez les meilleures pratiques pour minimiser le gonflement, LFS sera d'une grande aide pour votre cursus. Si vous souhaitez en savoir plus sur Git, consultez les ressources suivantes :

FAQ Git LFS

Que se passe-t-il si je clone un dépôt avec des fichiers Git LFS ?

L'exécution de git clone sur des versions plus récentes de Git récupérera automatiquement le référentiel et les pointeurs LFS. Si vous utilisez une version plus ancienne de Git, vous devez lancer git lfs pull pour télécharger les fichiers volumineux. Vous pouvez également utiliser git lfs clone pour effectuer cette opération automatiquement.

Comment puis-je vérifier quels fichiers sont suivis par Git LFS ?

Coulez git lfs track pour voir les modèles de fichiers suivis, et git lfs ls-files pour lister les fichiers réels stockés à l'aide de LFS.

Que se passe-t-il si je n'ai plus d'espace de stockage Git LFS sur GitHub ou un autre service d'hébergement ?

Des services comme GitHub imposent des limites de stockage. Vous pouvez gérer le stockage à l'aide de git lfs prune, acheter de l'espace supplémentaire ou utiliser une autre solution de stockage externe.

Puis-je arrêter d'utiliser Git LFS après l'avoir activé ?

Oui, mais vous devez migrer vos fichiers vers Git standard à l'aide de git lfs migrate export --include="*.filetype" pour supprimer le cursus LFS.

Sujets

Les meilleurs cours de DataCamp

Cours

Introduction to GitHub Concepts

2 hr
24.8K
Learn how to use GitHub's various features, navigate the interface and perform everyday collaborative tasks.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow