Git Submoduler

Avancerad Git

Amanda Crawford-Adamo

Software and Data Engineer

Vad är en Git-submodul?

Git Submodul

git submodule
  • Ett repo nästlat i ett annat repo
  • Separat versionskontroll och historik
  • Ändringar i submodulen påverkar inte huvudrepot
  • Huvudrepot kan referera till en specifik version av en submodul

En illustration av ett repo med flera inbäddade repon.

Avancerad Git

Lägga till en submodul

Lägg till en submodul via länk eller katalog under angiven sökväg.

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

$$

Exempel

Lägger till datavalideringsbiblioteket i ETL-projektet under mappen libs/validator i ETL-repot.

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

Lista submoduler

Lista alla submoduler i ett projekt

git submodule status

Exempel

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

Uppdatera submoduler

Uppdatera submodul med senaste ändringar

Det finns flera alternativ:

  1. Uppdaterar alla submoduler där källkoden finns på din lokala dator.
    git submodule update --init 
    
  2. Uppdaterar alla submoduler där källkoden finns i ett fjärrrepo.
    git submodule update --init --remote 
    
  3. Uppdaterar en specifik submodul.
    git submodule update --init <path_to_submodule>
    
Avancerad Git

Ta bort submoduler

Ta bort en submodul – steg för steg

  1. Avinitialisera submodulen.
    git submodule deinit <submodule_name>
    
  2. Ta bort submodulen från git-repots index.
    git rm <path>
    
Avancerad Git

Extrahera en submodul från ett stort repo

  1. Kopiera alla filer som ska ingå i det nya submodulrepot till en mapp utanför repot.

  2. Skapa ett nytt repo för submodulen i den nya mappen:

    git init <new-submodule>
    
  3. Använd git filter-repo för att extrahera relevanta filer och historik från huvudprojektet:

    git filter-repo --path <extract_path> --invert-paths
    
  4. Lägg till det extraherade repot som en submodul i huvudprojektet:

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

När ska submoduler användas och bästa praxis

Användningsområden:

  1. Hantera externa bibliotek
  2. Dela kod mellan projekt
  3. Hålla reda på specifika versioner av beroenden

Bästa praxis:

  1. Håll submoduler uppdaterade
  2. Använd relativa sökvägar
  3. Kommunicera ändringar med teamet
Avancerad Git

Nu kör vi en övning!

Avancerad Git

Preparing Video For Download...