
Les grands dépôts Git peuvent utiliser beaucoup de ressources et ralentir votre ordinateur. Cela peut parfois être atténué en utilisant un clonage superficiel, qui supprime tous les commits sauf les plus récents, ce qui facilite le téléchargement des dépôts Git avec de longs historiques.
Qu'est-ce que le clonage superficiel ?
Le clonage d'un référentiel crée non seulement une copie de l'intégralité du référentiel, mais également son historique de validation complet. Pour la plupart des référentiels, la taille et la longueur globales de l'historique de validation ne sont pas un problème. Cependant, pour les référentiels très volumineux, le clonage de toutes ces données peut prendre beaucoup de temps et de ressources.
Par exemple, le noyau Linux utilise le même référentiel depuis la nuit des temps. Il compte plus de 1,1 million de commits. Le clonage peut prendre plus d'une heure sur du matériel plus ancien et utiliser plusieurs gigaoctets de RAM uniquement pour le processus Git seul. Bien sûr, tous les référentiels ne sont pas aussi énormes, mais certains s'en rapprochent, et même les contributeurs du noyau Linux ne veulent pas rester assis devant leur clavier pendant une heure à le regarder cloner.

Le clonage superficiel est une technique qui ne récupère qu'un nombre limité de commits récents. Cela se traduit par un clone léger et plus rapide qui conserve toujours les fonctionnalités nécessaires à votre travail, car la plupart des gens ne se soucient pas des anciens commits, et vous pouvez toujours soumettre des PR et pousser des modifications sans l'historique complet.
< p>Cela présente également de grands avantages pour les pipelines d'intégration continue (CI/CD), car le serveur de build n'a probablement pas besoin de connaître l'intégralité de l'historique Git uniquement pour créer l'application. Si vous écrivez des scripts qui fonctionnent avec les dépôts Git et que vous ne vous souciez que du contenu, cela peut valoir la peine d'utiliser le clonage superficiel à la place.
CONNEXESComment cloner un référentiel GitHub
Outre le temps de clonage, les référentiels superficiels s'exécutent généralement plus rapidement, car il y a moins d'historique à traiter lors de l'exécution de commandes quotidiennes. Des historiques très longs peuvent également entraîner un décalage des clients GUI Git, ce qui peut gâcher l'expérience.
Clonage superficiel d'un référentiel Git
Le moyen le plus simple de cloner peu profond consiste simplement à utiliser le paramètre –depth sur git clone. Cela limitera le clone à un certain nombre, comme 100 commits avant le HEAD du référentiel actuel. Tous les autres commits plus anciens seront tronqués de l'historique.
git clone –depth 100 [repository_URL]
Vous pouvez également tout cloner superficiellement après une certaine date, ce qui est beaucoup plus utile si vous ne le faites pas sachez combien de commits vous avez besoin.
git clone –shallow-since=”3 mois” [URL_référentiel]
Le paramètre de date peut accepter de nombreux formats différents, mais il y a simplement “X ans/mois& #8221; fonctionne généralement bien.
Il existe également des méthodes pour réduire en profondeur un référentiel Git existant, mais elles sont généralement compliquées et impliquent la réécriture de l'historique et la suppression manuelle de tous les anciens objets du cache de récupération de place de Git. Nous vous recommandons de simplement pousser toutes les modifications, de supprimer l'ancien référentiel et de recloner depuis la télécommande si vous souhaitez réduire la taille de votre référentiel existant.
Shallow Cloner une seule branche
Le clonage superficiel peut être combiné avec une autre fonctionnalité Git qui limite le clone à une seule branche. Si vous téléchargez simplement un dépôt pour vérifier une branche de fonctionnalité, vous pouvez exécuter cette commande à la place :
git clone –depth 100 [repository_URL] –single-branch –branch=[branch] < h2 role="heading" aria-level="2">Clones sans bulles et sans arbres
Une autre option similaire qui peut toujours conserver l'historique des commits consiste à utiliser des clones sans blobles. Dans Git, le contenu réel du fichier est stocké sous forme de “blobs,” et Git ajoute au-dessus de ces arbres et commits qui suivent comment ces blobs vont ensemble.
Les carrés sont des blobs, les triangles sont des arbres et les cercles sont les commits face à l'utilisateur qui pointent vers tout.Étant donné que Git ne se soucie principalement que des commits et de l'arborescence, vous pouvez choisir d'omettre les blobs et de les télécharger à la demande lorsqu'ils sont nécessaires. Cela peut considérablement accélérer les temps de clonage tout en conservant l'historique. Vous pouvez également combiner des clones blobles et peu profonds.
Pour ce faire, exécutez git clone avec un ensemble de filtres :
git clone –filter=blob:none [repository_URL]
Les clones sans arbre sont similaires et souvent utilisés pour l'automatisation, mais ne sont généralement pas recommandés pour une utilisation quotidienne car ils peuvent en fait être plus lents pour les opérations Git quotidiennes.
git clone –filter=tree:0 [repository_URL]
Généralement cependant, superficiel les clones seront toujours plus rapides, et les clones sans blobles augmenteront en taille au fil du temps car il faudra accéder à davantage de parties du dépôt.
LIRE LA SUITE
- › Comment réparer “Le serveur de récupération n'a pas pu être contacté” Erreur Mac
- &rsaquo ; Les applications Microsoft 365 obtiennent une nouvelle police par défaut
- › Windows 11 dit adieu aux anciennes applications ARM
- &rsaquo ; Google Bard AI propose de nouvelles fonctionnalités et des langues prises en charge
- › NotebookLM de Google change la donne pour la prise de notes
- › 1Password accélère votre processus de connexion