Подключение субмодулей в Git

Git submodules инструмент, который позволяет создать ссылку на сторонний репозиторий (а точнее на коммит в стороннем репозитории). Обычно это нужно для того чтобы включить в свой репозиторий сторонние решения или вынести отдельные части приложения в новый репозиторий оставив только указатель на него. Подробно об этом можно почитать в официальной документации - Git submodules tools.
Команда для добавления submodules:
git submodule add git://github.com/gitaccount/repository.git your_directory_submodule
Где "your_directory_submodule" это папка которая создастся после запуска команды и в неё будет склонирован указанный репозиторий.
Чтобы ваша IDE поняла что работает с git submodules и появилась возможность создавать или выбирать ветки в конкретном репозитории, необходимо указать папку с submodules в настройках. Для JetBrains (Intelejia, PHPStorm, etc): Settings - Version Control - Add (Choise option Directory and set your catalog with submodule).
Необходимо создавать отдельные ветки в субмодулях, чтобы не потерять изменения. Иначе при работе с главный репозиторием изменения не будут учитываться и попросту перетрутся на те что указаны в последнем коммите для главного репозитория.
Чтобы обновить хэш коммит субмодуля в главном репозитории, нужно после отправки изменений субмодуля на сервер, выполнить команду:
git submodule update
А затем запушить на сервер основной репозиторий.
Окно отправки изменений на сервер в IDE IntelliJ IDEA:
Пример как выглядит репозиторий в GitHub:
Источники:
- Официальная документация по submodules.
- Пример моего репозитория с подключенными Submodules на Github - ModuleRepoMain