Как использовать подмодули git submodules для управления зависимостями в проекте?
Подмодули в Git представляют собой механизм, который позволяет включать один репозиторий внутрь другого в качестве поддиректории. Это незаменимо, когда ваш проект зависит от стороннего кода, например, библиотеки или общей утилиты, и вы хотите сохранить возможность независимо обновлять эту зависимость, одновременно отслеживая конкретную фиксированную версию внутри основного проекта.
Чтобы добавить новый подмодуль в свой проект, используется команда git submodule add с указанием URL удаленного репозитория и пути, куда его следует поместить. Например, команда git submodule add https://github.com/example/lib.git libs/lib скачает указанный репозиторий в папку libs/lib и автоматически создаст файл .gitmodules, в котором будет храниться конфигурация связи между репозиториями.
Клонирование проекта, содержащего подмодули, требует особой внимательности, так как по умолчанию папки с подмодулями окажутся пустыми. Чтобы скачать основной проект вместе со всеми зависимостями, нужно использовать команду git clone --recurse-submodules. Если проект уже клонирован обычной командой, подмодули можно инициализировать и загрузить позже с помощью команд git submodule init и git submodule update.
Обновление подмодулей до актуальной версии требует перехода внутрь папки подмодуля и выполнения стандартных операций получения изменений, но чаще всего разработчики управляют ими из корня основного репозитория. Важно помнить, что фиксация изменений в подмодуле требует отдельного коммита внутри него, а основной проект лишь сохраняет ссылку на конкретный хэш коммита этой зависимости.