Juste pour être complet:
Il existe une autre solution que je recommanderais: la fusion des sous-arbres .
Contrairement aux sous-modules, il est plus facile à maintenir. Vous créeriez chaque référentiel de la manière habituelle. Lorsque vous êtes dans votre référentiel principal, vous souhaitez fusionner le maître (ou toute autre branche) d'un autre référentiel dans un répertoire de votre répertoire principal.
$ git remote add -f OtherRepository /path/to/that/repo
$ git merge -s ours --no-commit OtherRepository/master
$ git read-tree --prefix=AnyDirectoryToPutItIn/ -u OtherRepository/master
$ git commit -m "Merge OtherRepository project as our subdirectory"`
Ensuite, afin d'extraire l'autre référentiel dans votre répertoire (pour le mettre à jour), utilisez la stratégie de fusion de sous-arborescence:
$ git pull -s subtree OtherRepository master
J'utilise cette méthode depuis des années maintenant, ça marche :-)
Vous trouverez plus d'informations sur cette façon, y compris la comparaison avec les sous-modules, dans ce document git howto .