Certains projets incluent d'autres projets. Une bibliothèque partagée, un thème commun, un outil interne : quand plusieurs dépôts doivent coexister, Git propose deux approches différentes, les submodules et le subtree. Ces deux mécanismes répondent au même besoin avec des compromis distincts.
Le bundling répond à un besoin différent : transférer un dépôt complet (avec tout l'historique) sans passer par un serveur, clé USB, réseau isolé, air-gapped.
Quel outil pour quel besoin ?
Section intitulée « Quel outil pour quel besoin ? »| Besoin | Outil | Guide |
|---|---|---|
| Inclure une bibliothèque tierce avec son propre dépôt | git submodule | Submodules |
| Incorporer un sous-projet dans le dépôt principal | git subtree | Subtree |
| Transférer un dépôt sans réseau (USB, air-gap) | git bundle | Bundling |
| Éviter de re-saisir les credentials à chaque push | credential.helper | Stockage des credentials |
Les quatre leçons du module
Section intitulée « Les quatre leçons du module »Submodules enseigne git submodule add, init, update et
foreach pour inclure un dépôt dans un autre avec un cycle de vie
indépendant, avec git submodule en commande centrale. Subtree montre git subtree add, pull et push
pour incorporer un sous-projet directement dans l'arbre du dépôt principal.
Bundling emballe un dépôt complet avec git bundle create,
verify et unbundle, pour le transférer sans accès réseau.
Stockage des credentials clôt le module avec
cache, store, le trousseau macOS et Git Credential Manager, pour ne
plus saisir ses identifiants à chaque opération.
À retenir
Section intitulée « À retenir »git submodule update --init --recursiveest la commande à lancer après ungit clonequi contient des submodules, sans elle, les sous-dossiers sont videsgit subtree add --prefix=lib/ <url> main --squashincorpore un dépôt distant en un seul commit squashé, préférable pour garder l'historique compactgit bundle create repo.bundle --allcrée une archive complète du dépôt (tous les objets, toutes les branches)git credential-manager(GCM) est la méthode recommandée sur Windows, macOS et Linux modernes, stocke les tokens OAuth de façon sécurisée- Le fichier
~/.netrc(store en clair) ne doit jamais être utilisé pour des tokens de production