Проверяет понимание механизма git submodules для подключения одного репозитория внутрь другого и умения работать с внешними зависимостями в проекте.
Git submodules позволяют включить один Git-репозиторий в другой как подкаталог. При этом родительский репозиторий не хранит содержимое вложенного репозитория — он хранит только ссылку на конкретный коммит во внешнем репозитории. Это даёт возможность переиспользовать общий код между несколькими проектами, не копируя его вручную.
Когда вы добавляете сабмодуль, Git создаёт файл .gitmodules с описанием URL и пути, а также специальную запись в индексе, указывающую на конкретный коммит внешнего репозитория. При клонировании родительского проекта папка сабмодуля будет пустой, пока вы не выполните инициализацию.
git submodule add <url> <path> — добавить сабмодуль.git clone --recurse-submodules <url> — клонировать проект вместе с сабмодулями.git submodule update --init --recursive — инициализировать и обновить сабмодули.git submodule update --remote — подтянуть последние изменения из внешнего репозитория.# Добавляем сабмодуль в папку libs/shared
git submodule add https://github.com/user/shared-lib.git libs/shared
# Клонируем проект с сабмодулями
git clone --recurse-submodules https://github.com/user/main-project.git
# Обновляем сабмодули до нужных коммитов
git submodule update --init --recursive
# Переходим в сабмодуль и обновляем его вручную
cd libs/shared
git checkout main
git pull
cd ../..
git add libs/shared
git commit -m "Update shared submodule"git pull в родительском репозитории не обновляет содержимое сабмодулей автоматически.git submodule foreach для массовых операций.Сабмодули стоит применять, когда нужно подключить внешнюю библиотеку или общий код с собственной историей и версионированием, и при этом важно фиксировать конкретную версию. Если же требуется просто скопировать код без истории, лучше подойдёт subtree или обычная зависимость пакетного менеджера.