Git submoduly

Advanced Git

Amanda Crawford-Adamo

Software and Data Engineer

Co je Git submodul?

Git submodul

git submodule
  • Repozitář vnořený do jiného repozitáře
  • Oddělená správa verzí a historie
  • Změny v submodulu neovlivní hlavní repozitář
  • Hlavní repozitář může odkazovat na konkrétní verzi submodulu

Znázornění repozitáře s více vnořenými repozitáři.

Advanced Git

Přidání submodulu

Přidání submodulu pomocí odkazu nebo adresáře do zadané cesty.

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

$$

Příklad

Přidá knihovnu data validator do projektu ETL ve složce libs/validator repozitáře ETL.

git submodule add https://github.com/example/data-validator.git libs/validator
Advanced Git

Výpis submodulů

Výpis všech submodulů v projektu

git submodule status

Příklad

$ git submodule status
e1f2...7w8x9 data_cleaning_lib
a1b2...q7r8 api_connector
d9e8...t3u2 visualization_toolkit
Advanced Git

Aktualizace submodulů

Aktualizace submodulu na nejnovější změny

K dispozici jsou tyto možnosti:

  1. Aktualizuje všechny submoduly, jejichž zdrojový kód je na lokálním počítači.
    git submodule update --init 
    
  2. Aktualizuje všechny submoduly, jejichž zdrojový kód je ve vzdáleném repozitáři.
    git submodule update --init --remote 
    
  3. Aktualizuje konkrétní submodul.
    git submodule update --init <path_to_submodule>
    
Advanced Git

Odebrání submodulů

Postup odebrání submodulu

  1. Zrušte inicializaci submodulu.
    git submodule deinit <submodule_name>
    
  2. Odeberte submodul z indexu repozitáře.
    git rm <path>
    
Advanced Git

Extrakce submodulu z velkého repozitáře

  1. Zkopírujte všechny soubory pro nový submodul do složky mimo repozitář.

  2. V nové složce vytvořte repozitář pro submodul:

    git init <new-submodule>
    
  3. Použijte git filter-repo k extrakci příslušných souborů a historie z hlavního projektu:

    git filter-repo --path <extract_path> --invert-paths
    
  4. Přidejte extrahovaný repozitář jako submodul do hlavního projektu:

    git submodule add <new-submodule_path> <path_to_store_submodule>
    
Advanced Git

Kdy použít submoduly a osvědčené postupy

Případy použití:

  1. Správa externích knihoven
  2. Sdílení kódu napříč projekty
  3. Udržování konkrétních verzí závislostí

Osvědčené postupy:

  1. Udržujte submoduly aktuální
  2. Používejte relativní cesty
  3. Sdělujte změny týmu
Advanced Git

Pojďme cvičit!

Advanced Git

Preparing Video For Download...