Git Submodule
Ultimo aggiornamento
Un submodule incorpora un repository Git dentro un altro, bloccato su un commit specifico. Il repository padre registra da quale commit del submodule dipende, così tutti ottengono la stessa versione. È il modo per includere una libreria o un componente condiviso che vive in un proprio repository, senza copiarne il codice.
Prova questi comandi nel terminal playground: una vera shell nel tuo browser, senza installare nulla.
Sintassi
| Comando | Cosa fa |
|---|---|
git submodule add <url> libs/x | Aggiunge un repo come submodule in libs/x |
git clone --recurse-submodules <url> | Clona un repo e i suoi submodule |
git submodule update --init --recursive | Inizializza e scarica i submodule dopo un clone normale |
git submodule update --remote | Aggiorna i submodule al loro ultimo commit |
git submodule status | Mostra il commit di ogni submodule |
Casi comuni
| Obiettivo | Comando |
|---|---|
| Clonare un progetto che usa submodule | git clone --recurse-submodules <url> |
| Scaricare i submodule dopo aver già clonato | git submodule update --init --recursive |
| Portare un submodule all'ultima versione | git submodule update --remote |
Domande frequenti su git submodule
Cos'è un git submodule?
Come clono un repository con i submodule?
git clone --recurse-submodules <url> per clonare il padre e tutti i suoi submodule in un solo passo. Se hai già clonato senza quell'opzione, esegui dopo git submodule update --init --recursive per riempire le cartelle dei submodule.Come aggiorno un submodule all'ultimo commit?
git submodule update --remote, che scarica il branch tracciato di ogni submodule e lo sposta all'ultimo commit. Poi fai il commit della modifica nel repository padre, perché il padre registra a quale commit del submodule punta: l'aggiornamento non viene salvato finché non committi quel puntatore.Perché la cartella del mio submodule è vuota dopo il clone?
--recurse-submodules, quindi Git ha creato le cartelle ma non ne ha scaricato il contenuto. Risolvi con git submodule update --init --recursive, che inizializza e scarica tutti i submodule.Posso esercitarmi online?
git submodule in una vera shell nel tuo browser, senza installare nulla. Il corso interattivo gratuito di Git di Coddy spiega anche come configurare un repository passo dopo passo.