2015-11-16 18 views

risposta

25

Git memorizza le informazioni sui sottomoduli in due punti. Il primo è in un file chiamato .gitmodules, che viene archiviato nel repository git. Le modifiche a questo file sono ciò che viene propagato ad altri repository.

L'altra posizione è in .git/config, ed è dove git appare in realtà quando si esegue la maggior parte dei comandi.

Quindi immagina di aver lavorato a un progetto per un po ', e c'è un sottomodulo chiamato foo. I file per questo sottomodulo sono estratti da qualche URL, non importa dove. Ad un certo punto, tuttavia, questo URL cambia. Forse cambia in modo che il sottomodulo sia estratto da un server diverso, o da un percorso diverso o altro. Quando aggiorni il tuo repository, la copia del file .gitmodules verrà aggiornata, ma non il tuo file .git/config; staresti ancora verificando dal vecchio URL. Quando vuoi iniziare il check-out dal nuovo url, esegui git submodule sync per copiare la nuova configurazione da .gitmodules a .git/config. Git non lo fa automaticamente perché potresti aver apportato le tue modifiche alla tua configurazione e non vorrebbe sovrascriverle.

+0

Mi chiedo se è necessario modificare manualmente il collegamento in '.gitmodules', perché non modificare manualmente la stessa cosa in' .git/config'? O ci sarebbe un comando che cambia in due punti? – Narek

+0

Non c'è alcun comando che io sappia quali modifiche sono contemporaneamente, a parte 'git submodule add', che possono essere usate per aggiungere nuovi sottomoduli ma non per cambiarne uno esistente. – db48x

+0

Voglio dire, è strano per me che in un posto devi cambiare manualmente e in altri è cambiato per comando, cosa ne pensi? – Narek