Cours
Présentation du stockage de fichiers volumineux (LFS) de Git
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.
Les meilleurs cours de DataCamp
Cours
Introduction to Git
Cours