Подмодули применяются, когда необходимо в рамках одного git репозитория добавить другой git репозиторий, в качестве внутренней/составной части.
Применять такой подход рекомендуется только когда нет альтернатив. То есть нет возможности использовать пакетный менеджер(npm/composer) или аналогичный инструмент.
Удобно использовать при работе с WordPress, когда используется стандартная структура проекта, без подключения composer`а. А плагины устанавливаются из gihub репозиториев.
Добавление подмодулей.
Для добавления нового подмодуля используйте команду git submodule add
$ git submodule add https://github.com/chaconinc/DbConnector Cloning into 'DbConnector'... remote: Counting objects: 11, done. remote: Compressing objects: 100% (10/10), done. remote: Total 11 (delta 0), reused 11 (delta 0) Unpacking objects: 100% (11/11), done. Checking connectivity... done.
Во-первых, вы увидите новый файл .gitmodules. Это конфигурационный файл, в котором хранится соответствие между URL проекта и локальным подкаталогом, в который вы его выкачали:
[submodule “DbConnector”]
path = DbConnector
url = https://github.com/chaconinc/DbConnector
Клонирование проекта с подмодулями
Клонирование проекта с подмодулями. Когда вы клонируете такой проект, по умолчанию вы получите каталоги, содержащие подмодули, но ни одного файла в них не будет:
$ git clone https://github.com/chaconinc/MainProject
Каталог DbConnector присутствует, но он пустой. Вы должны выполнить две команды: git submodule init
— для инициализации локального конфигурационного файла, и git submodule update
— для получения всех данных этого проекта и извлечения соответствующего коммита, указанного в основном проекте.
Вместо этого можно использовать, одну команду:
git clone --recurse-submodules https://github.com/chaconinc/MainProject
Установка зависимостей, при разворачивании проекта.
Установка зависимостей, при разворачивании проекта. `git submodule sync --recursive` `git submodule update --init --recursive` `git submodule update --remote --rebase`
Более подробную информацию можно прочитать тут.