web-dev-qa-db-fra.com

Ajouter rétrospectivement --recoursive à un dépôt Git

Si vous git clone avec --recursive, vous pouvez aussi obtenir tous les sous-modules git.

Si j'ai oublié d'ajouter ce drapeau magique lors du clonage, comme cela peut arriver, comment puis-je aller chercher des sous-modules?

De plus, comment puis-je définir l'indicateur récursif comme valeur par défaut pour les futurs clones?

56
kenneth

Vous pouvez le faire avec ceci après un simple clone de haut niveau:

git submodule update --init --recursive

Je ne recommanderais pas que clone fasse cela par défaut. Si vous utilisez les sous-modules de manière agressive pour le développement et ne vous contentez pas de vous connecter à des librairies de logiciels libres tierces sur github que vous pourrez mettre à niveau une fois dans une lune bleue, utilisez la méthode git slave ou sous-arbre .

J'espère que cela t'aides.

68
Adam Dymitruk
  1. Depuis la racine de votre repo:

    $ git submodule update --init --recursive
    

    Cela mettra à jour tous les sous-modules enregistrés, en les initialisant le cas échéant à la valeur trouvée dans le fichier .gitmodules, et en effectuant également une récurrence dans des sous-modules complexes (avec leurs propres sous-modules), en les initialisant et en les actualisant.

  2. Le moyen le plus simple que je connaisse de faire le clonage récursif par défaut serait de masquer git clone avec un alias.

    $ git config --global alias.clone = 'clone --recursive'
    

    En ce qui concerne l'ajout d'options toujours, je pense que c'est la méthode idiomatique.

10
Tim Visher

IIRC, git submodule init, git submodule update

Malheureusement, je ne vois pas d’option permettant d’activer récursive par défaut, cependant.

1
user502515

Il semble que vous ne pouvez pas remplacer "clone" avec un alias "clone", il s'agit donc d'un nouvel alias (solution d'Abizern) ou "--recursive". 

Est-il possible de remplacer la commande git par git alias?

0
Dell Kronewitter