2012-04-25 19 views
23

Ho creato un progetto submodule e lo ho installato su Github.git: cambia origine del sottomodulo clonato

ho creato un altro progetto, supermodule, e poi ha fatto questo:

cd supermodule 
git init 
mkdir lib 
git clone git://github.com/tandu/submodule lib/submodule 
git submodule add ./lib/submodule lib/submodule 

Questo ha funzionato bene, ma sul sito web, non è possibile trovare il link al modulo quando si visualizzano i file (in realtà dice solo "Caricamento dati commit" per sempre). La cartella del sottomodulo ha lo stesso origin.

A quanto pare, quello che ho dovuto fare è stato

... 
mkdir lib 
git submodule add git://github.com/tandu/submodule lib 

... ma è troppo tardi per farlo ora. Come posso avere correttamente il sottomodulo in questo progetto in origin?

risposta

41

Questo apparentemente dipende molto dalla versione di git che si sta utilizzando.

  1. Se presente, modificare la voce url nella sezione [submodule "<dirname>"] del file .gitmodules.
  2. Se presente, modificare la voce url nella sezione [submodule "<dirname>"] del file .git/config.
  3. Modificare lo url nella configurazione del sottomodulo stesso. La posizione del file config dipende dalla versione. Versioni precedenti lo avevano in <dirname>/.git/config, più recenti in .git/modules/<dirname>/config. Tuttavia, si può sempre utilizzare sotto comando:
cd <dirname> 
git config remote.origin.url <new_url> 
+5

con la versione corrente di git (2.1.0), facendo 'git modulo di sincronizzazione --recursive' era abbastanza per me di aggiornare al modulo' origine 'remoto. – desseim

Problemi correlati