У самого Git нет удобного способа делать то, что вы хотите. Определенно есть набор функций, которые при правильном использовании могут выполнять то, что вы хотите. К счастью, несколько расширений git уже реализуют эту функциональность.
Git subtree
является частью дистрибутива git и позволяет сопоставить другое репо проекта с вашим основным репо проекта. Это позволяет отображать истории между основным и проектом и подпроектами. Кажется, это хороший кандидат для решения ваших проблем.
Он реализован в виде очень простого скрипта и имеет некоторые недостатки. Например, информация отображения не передается через клонов. Это было решено с помощью скрипта git-subrepo. Таким образом, это может быть второй кандидат для вас.
Подмодули Git не обеспечивают отображение истории и, скорее всего, в вашем случае их будет сложно использовать.