Définissez les sous-arborescences et les sous-modules
Les sous-modules et les sous-arborescences ? Mais qu'est-ce que c'est ?

Commençons par les sous-modules. N'avez-vous jamais eu envie d'inclure un projet tiers au sein du projet sur lequel vous étiez en train de travailler ? Je ne parle pas d'une simple dépendance tierce, mais d'un module ou d'une bibliothèque que vous développez simultanément.
Admettons que vous ayez à développer deux projets totalement distincts, mais qui vont à un moment devoir se retrouver.
C'est un cas typique d'utilisation des sous-modules Git, car ils vont vous permettre d'inclure un autre dépôt Git au sein de votre projet actuel. Il vous sera alors possible de gérer vos commits séparément pour chacun des dépôts.
git submodule add https://github.com/etudiantOC/ProjetSubModule dossier/destination
Cette commande va ajouter à notre dépôt courant le projet ProjetSubModule, comme sous-module dans le dossier Dossier/Destination.
Maintenant, voyons la différence avec les sous-arborescences. Si vous avez déjà développé des projets, vous avez sûrement déjà dû vous dire qu'il vous serait utile de garder une fonctionnalité pour la réutiliser dans d'autres projets. Il pourrait être très facile de juste copier-coller les fichiers, et de les remettre plus tard dans les autres projets. Cependant, vous perdriez tout l'historique sur ces fonctionnalités. Heureusement, il existe les sous-arborescences Git !
Git subtree va vous permettre de créer un nouvel arbre de commits pour un sous-dossier de votre dépôt Git. Autrement dit, Git subtree régénère l’historique d’un dossier.
git subtree push -P monRépertoire git@mon-serveur-git:group/projet.git master
Votre répertoire va être pushé sur votre nouveau dépôt distant sur la branche master. :)
Vous savez maintenant modifier et nettoyer vos branches et vous connaissez les sous-modules. Terminons cette partie par un quiz ! Rendez-vous ensuite dans la partie suivante ! :)