Submodule Git

Git avansat

Amanda Crawford-Adamo

Software and Data Engineer

Ce este un submodul Git?

Submodul Git

git submodule
  • Un repository imbricat în alt repository
  • Control de versiune și istoric separate
  • Modificările din submodul nu afectează repo-ul principal
  • Repo-ul principal poate face referință la o versiune specifică a unui submodul

Reprezentarea unui repo cu mai multe repository-uri în interior.

Git avansat

Adăugarea unui submodul

Adăugarea unui submodul folosind linkul sau directorul sub folderul path.

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

$$

Exemplu

Adaugă biblioteca de validare a datelor în proiectul ETL, în folderul libs/validator din repo-ul ETL.

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

Listarea submodulelor

Listarea tuturor submodulelor dintr-un proiect

git submodule status

Exemplu

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

Actualizarea submodulelor

Actualizarea submodulului cu cele mai recente modificări

Există mai multe opțiuni:

  1. Actualizează toate submodulele al căror cod sursă se află pe calculatorul local.
    git submodule update --init 
    
  2. Actualizează toate submodulele al căror cod sursă se află pe un repo remote.
    git submodule update --init --remote 
    
  3. Actualizează un submodul specific.
    git submodule update --init <path_to_submodule>
    
Git avansat

Eliminarea submodulelor

Procesul de eliminare a unui submodul

  1. Dezinițializați submodulul.
    git submodule deinit <submodule_name>
    
  2. Eliminați submodulul din indexul repo-ului git.
    git rm <path>
    
Git avansat

Extragerea unui submodul dintr-un repo mare

  1. Copiați fișierele necesare pentru noul submodul într-un folder din afara repo-ului.

  2. În noul folder, creați un repository pentru submodul:

    git init <new-submodule>
    
  3. Utilizați git filter-repo pentru a extrage fișierele și istoricul relevante din proiectul principal:

    git filter-repo --path <extract_path> --invert-paths
    
  4. Adăugați repository-ul extras ca submodul în proiectul principal:

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

Când se folosesc submodulele și bune practici

Cazuri de utilizare:

  1. Gestionarea bibliotecilor externe
  2. Partajarea codului între proiecte
  3. Menținerea unor versiuni specifice ale dependențelor

Bune practici:

  1. Mențineți submodulele actualizate
  2. Utilizați căi relative
  3. Comunicați modificările echipei
Git avansat

Să exersăm!

Git avansat

Preparing Video For Download...