Git Submodules

Просунуте Git

Amanda Crawford-Adamo

Software and Data Engineer

Що таке підмодуль Git?

Підмодуль Git

git submodule
  • Репозиторій, вкладений у інший репозиторій
  • Окремий контроль версій і історія
  • Зміни в підмодулі не впливають на основний репозиторій
  • Основний репозиторій може посилатись на певну версію підмодуля

Схематичне зображення репозиторію з кількома репозиторіями всередині.

Просунуте Git

Додавання підмодуля

Додавання підмодуля за посиланням або каталогом у вказаний шлях.

git submodule add <repository link|dir> <path>

$$

Приклад

Додає бібліотеку перевірки даних до проєкту ETL у теку libs/validator в репозиторії ETL.

git submodule add https://github.com/example/data-validator.git libs/validator
Просунуте Git

Перегляд підмодулів

Список усіх підмодулів у проєкті

git submodule status

Приклад

$ git submodule status
e1f2...7w8x9 data_cleaning_lib
a1b2...q7r8 api_connector
d9e8...t3u2 visualization_toolkit
Просунуте Git

Оновлення підмодулів

Оновлення підмодуля до останніх змін

Є кілька варіантів:

  1. Оновлює всі підмодулі, вихідний код яких на вашому локальному комп'ютері.
    git submodule update --init 
    
  2. Оновлює всі підмодулі, вихідний код яких у віддаленому репозиторії.
    git submodule update --init --remote 
    
  3. Оновлює конкретний підмодуль
    git submodule update --init <path_to_submodule>
    
Просунуте Git

Видалення підмодулів

Процес видалення підмодуля

  1. Деініціалізуйте підмодуль.
    git submodule deinit <submodule_name>
    
  2. Приберіть підмодуль з індексу репозиторію git.
    git rm <path>
    
Просунуте Git

Виділення підмодуля з великого репозиторію

  1. Скопіюйте всі файли, які мають бути в новому репозиторії підмодуля, в іншу теку поза репозиторієм.

  2. У новій теці створіть новий репозиторій для підмодуля:

    git init <new-submodule>
    
  3. Використайте git filter-repo, щоб виділити потрібні файли та історію з основного проєкту:

    git filter-repo --path <extract_path> --invert-paths
    
  4. Додайте виділений репозиторій як підмодуль до основного проєкту:

    git submodule add <new-submodule_path> <path_to_store_submodule>
    
Просунуте Git

Коли використовувати підмодулі та поради

Коли корисно:

  1. Керування зовнішніми бібліотеками
  2. Спільне використання коду між проєктами
  3. Підтримка фіксованих версій залежностей

Найкращі практики:

  1. Регулярно оновлюйте підмодулі
  2. Використовуйте відносні шляхи
  3. Узгоджуйте зміни з командою
Просунуте Git

Давайте потренуємось!

Просунуте Git

Preparing Video For Download...