Cloner avec Git partiellement votre projet
Saviez vosu que vous pouvez ne cloner qu’un répertoire ou plusieurs répertoire de votre repository Git? Ainsi vous économiserez de la place ! Ceci est particulièrement pertinent dans les monorepos, un monorepo est un repository unique mais avec plein de projets à l’intérieur. Google par exemple travaille en monorepo.
Vous savez alors qu’on ne peut pas cloner tous les projets de Google dsur son ordinateur, telle la volumétrie est grande. Il faut cloner ce dont on a besoin.
Comment fait on alors pour ne cloner ue partiellement un repository?
Vient la commande sparse checkout
Imaginez que vous êtes sur votre ordinateur et que vous vouliez cloner partiellement un repository, en ligne de commande voilà ce que l’on va faire
# Initialiser un nouveau dépôt Git git clone --filter=blob:none --no-checkout https://github.com/vous/ledepot.git cd ledepot # Activer sparse-checkout git sparse-checkout init --cone # Spécifier le dossier à récupérer git sparse-checkout set htdocs/todolist.com # Récupérer les fichiers git checkout main
Cette méthode vous permet néanmoins d’avoir l’historique des commits complet. Vous n’avez peut être pas besoin des commit précédents (on a rarement besoin), donc il est plus léger de n’avoir que le dernier commit.
Clonage encore plus light
git clone --depth 1 --filter=blob:none --sparse https://github.com/vous/ledepot.git cd ledepot git sparse-checkout set htdocs/todolist.com
--depth 1= télécharge uniquement le dernier commit (pas d’historique)- Parfait si vous voulez juste travailler sur la version actuelle
Les blob sont des fichiers binaire, on a avec commande éviter des les télécharger.
Cette méthode télécharge uniquement les fichiers du dossier spécifié au lieu de tout le repository. L’option --cone optimise les performances pour les grandes arborescences, et --filter=blob:none évite de télécharger les blobs inutiles initialement.
Si vous voulez modifier le sparse-checkout plus tard pour ajouter d’autres dossiers :
git sparse-checkout add htdocs/autre-dossier
Un mot à propos du flag –cone
--cone fait référence au mode « cone » du sparse-checkout, qui est une approche optimisée pour gérer les patterns de fichiers.
Sans --cone (mode pattern traditionnel) :
- Vous pouvez spécifier des patterns complexes comme
*.js,src/**/test - Plus flexible mais plus lent sur les gros repositories
- Git doit vérifier chaque fichier individuellement
Avec --cone (mode cone) :
- Vous ne pouvez spécifier que des dossiers entiers (pas de wildcards)
- Beaucoup plus rapide et performant
- Git optimise en travaillant par « cônes » de répertoires
- C’est le mode recommandé par défaut depuis Git 2.26
Donc le flag –cone permet d’être plus rapide quand vous avez un vraiment gros repository





