gitaarik/git_submodules. md (Italiano)

0 Comments

Perché submodules?

In Git puoi aggiungere un sottomodulo a un repository. Questo è fondamentalmente arepository incorporato nel tuo repository principale. Questo può essere moltoutile. Un paio di vantaggi dell’utilizzo di sottomoduli:

  • È possibile separare il codice in diversi repository.

    Utile se si dispone di una base di codice con componenti di grandi dimensioni, è possibile rendere acomponent un sottomodulo. In questo modo avrai un registro Git più pulito (i commit sono specifici per un determinato componente).,

  • È possibile aggiungere il sottomodulo a più repository.

    Utile se si dispone di più repository che condividono lo stesso componente. Con questo approccio puoi facilmente aggiornare quellicomponenti in tutti i repository che li hanno aggiunti come sottomodulo.Questo è molto più comodo di copiare-incollare il codice in therepositories.

Nozioni di base

Quando aggiungi un sottomodulo in Git, non aggiungi il codice del sottomodulo al repository principale, aggiungi solo informazioni sul sottomodulo che vengono aggiunte al repository principale., Questa informationdescribes che commit il sottomodulo sta puntando. In questo modo, il codice del sottomodulo non verrà automaticamente aggiornato se il sottomodulo”srepository” viene aggiornato. Questo è buono, perché il tuo codice potrebbe non funzionare con l’ultimo commit del sottomodulo, impedisce unexpectedbehaviour.,

l’Aggiunta di un submodule

È possibile aggiungere un submodule di un repository di simile a questo:

Con la configurazione di default, questo permetterà di controllare il codice del tagawesome_submodule.git repository path_to_awesome_submoduledirectory, e aggiungere le informazioni per il repository principale in proposito submodule, che contiene il commit della submodule punti,che sarà il commit corrente del ramo predefinito (di solitomaster branch) il tempo di esecuzione del comando.,

Dopo questa operazione, se fai ungit status vedrai due file nell’elencoChanges to be committed: il.gitmodules e il percorso del sottomodulo. Quando commetti e spingi questi file, commetti / spingi il sottomodulo all’origine.

Ottenere il codice del sottomodulo

Se un nuovo sottomodulo viene creato da una persona, le altre persone nel team devono avviare questo sottomodulo. Per prima cosa devi ottenere le informazioni sul sottomodulo, questo viene recuperato da un normalegit pull., Se ci sono nuovi sottomoduli lo vedrai nell’output digit pull. Quindi dovrai avviarli con:

Questo estrarrà tutto il codice dal sottomodulo e lo posizionerà nella directory in cui è configurato.

Se hai clonato un repository che fa uso di sottomoduli, dovresti anche eseguire questo comando per ottenere il codice del sottomodulo. Questo non è fatto automaticamente da git clone.

Spingendo gli aggiornamenti nel sottomodulo

Il sottomodulo è solo un repository separato., Se vuoi apportare modifiche, dovresti apportare le modifiche in questo repository e spingerle come in un normale repository Git(basta eseguire i comandi git nella directory del sottomodulo). Tuttavia, dovresti anche far sapere al mainrepository che hai aggiornato il repository del sottomodulo e utilizzare l’ultimo commit del repository del sottomodulo. Perché se fai nuovi commit all’interno di un sottomodulo, il repository principale punterà ancora al vecchio commit.,

Quindi, se vuoi avere queste modifiche anche nel tuo repository principale, dovresti dire al repository principale di utilizzare l’ultimo commit di thesubmodule. Ora, come si fa a farlo?

Quindi hai apportato modifiche nel repository del sottomodulo e le hai impegnate nel suo repository. Se ora fai un git status nel mainrepository, vedrai che il sottomodulo è nella lista Changes not staged for commit e ha il testo (modified content) dietro di esso.Ciò significa che il codice del sottomodulo viene estratto su un commit diverso rispetto al repository principale., Tomake il repository principale punta a questo nuovo commit, basta aggiungere questa modifica con git add e poi commit e spingerlo.

Mantenere aggiornati i sottomoduli

Se qualcuno ha aggiornato un sottomodulo, gli altri membri del team dovrebbero aggiornareil codice dei loro sottomoduli. Questo non viene fatto automaticamente dagit pull, perché congit pull recupera solo le informazioni che il sottomodulo punta a un altro commit, ma non aggiorna il codice del sottomodulo., Per aggiornare il codice dei sottomoduli, è necessario eseguire:

Cosa succede se non si esegue questo comando?

Se non si esegue questo comando, il codice del sottomodulo viene controllato su un vecchio commit. Quando fai git statusvedrai il sottomodulo nell’elencoChanges not staged for commitcon il testo(modified content) dietro di esso. Questo non è perché hai cambiato il codice di thesubmodule, ma perché il suo codice viene estratto in un differentcommit. Quindi Git vede questo come un cambiamento, ma in realtà non hai semplicemente aggiornato il codice del sottomodulo., Quindi, se si sta lavorando withsubmodules, non dimenticate di mantenere i sottomoduli up-to-date.

Rendere più facile per tutti

A volte è fastidioso se si dimentica di avviare e aggiornare yoursubmodules. Fortunatamente, ci sono alcuni trucchi per renderlo più facile:

Questo aggiornerà i sottomoduli e, se non sono ancora iniziati, li avvierà.

Puoi anche avere sottomoduli all’interno di sottomoduli., In questo caso è”llwant di aggiornamento/avviare il sotto-moduli in modo ricorsivo:

Questo è un sacco di tipo, quindi, è possibile creare un alias:

Ora, ogni volta che si esegue git update si eseguirà un git pull anda git submodule update --init --recursive, quindi l’aggiornamento di tutti i codein tuo progetto.


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *