Як використовувати підмодулі 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.
Оновлення підмодулів до актуальної версії вимагає переходу всередину папки підмодуля і виконання стандартних операцій отримання змін, але найчастіше розробники керують ними з кореня основного репозиторію. Важливо пам'ятати, що фіксація змін у підмодулі вимагає окремого коміту всередині нього, а основний проєкт лише зберігає посилання на конкретний хеш коміту цієї залежності.