2012-06-06 21 views

risposta

88

I repository di submodule rimangono in uno stato HEAD distaccato che punta a un commit specifico. Cambiare quell'impegno significa semplicemente estrarre un tag diverso o eseguire il commit, quindi aggiungere la modifica al repository principale.

$ cd submodule 
$ git checkout v2.0 
Previous HEAD position was 5c1277e... bumped version to 2.0.5 
HEAD is now at f0a0036... version 2.0 

git-status sul repository genitore sarà ora segnalare un albero sporca:

# On branch dev [...] 
# 
# modified: submodule (new commits) 

aggiungere la directory modulo e si impegnano a memorizzare il nuovo puntatore.

+4

Dopo aver eseguito il repo padre con una specifica diramazione/versione di un sottomodulo, è possibile che altri controllino la stessa versione del sottomodulo in futuro? Oppure, devono essere specificati di nuovo manualmente? – QZHua

19

Passaggio 1: Aggiungere il modulo

git submodule add git://some_repository.git some_repository 

Fase 2: Fissare il modulo a un particolare impegno

Di default il nuovo modulo sarà il monitoraggio HEAD del ramo principale, ma non sarà aggiornato man mano che aggiorni il tuo repository principale. Al fine di cambiare il sottomodulo per tenere traccia di un particolare commit o di una diversa directory di cambio di diramazione nella cartella del sottomodulo e cambiare ramo come in un normale repo.

git checkout -b some_branch origin/some_branch 

Ora il sottomodulo è fisso sul ramo di sviluppo anziché HEAD del master.

Da Two Guys Arguing — Tie Git Submodules to a Particular Commit or Branch.

+10

È più facile usare 'git submodule add -b some_branch git: //some_repository.git some_repository' – Caumons

+7

In questo momento non sembra che' git submodule add -b' possa prendere un tag o uno sha1hash. Può solo prendere un ramo. – CMCDragonkai

Problemi correlati