Come posso aggiungere un sottomodulo Git per un tag o commit specifico?
Come posso aggiungere un sottomodulo Git per un tag o commit specifico?
Risposte:
I repository dei sottomoduli rimangono in uno stato HEAD scollegato che punta a un commit specifico. La modifica di quel commit implica semplicemente l'estrazione di un tag o commit diverso, quindi l'aggiunta della modifica al repository genitore.
$ 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 ora riporterà un albero sporco:
# On branch dev [...]
#
# modified: submodule (new commits)
Aggiungere la directory del sottomodulo e impegnarsi a memorizzare il nuovo puntatore.
Passaggio 1: aggiungi il sottomodulo
git submodule add git://some_repository.git some_repository
Passaggio 2: correggi il sottomodulo a un commit particolare
Per impostazione predefinita, il nuovo sottomodulo terrà traccia di HEAD del ramo master, ma NON verrà aggiornato quando aggiorni il tuo repository principale. Per cambiare il sottomodulo per tenere traccia di un particolare commit o di un ramo diverso, cambia la directory nella cartella del sottomodulo e cambia i rami proprio come faresti in un normale repository.
git checkout -b some_branch origin/some_branch
Ora il sottomodulo è fissato sul ramo di sviluppo invece che su HEAD del master.
Da due ragazzi che litigano: lega i sottomoduli Git a un particolare impegno o ramo .
git submodule add -b some_branch git://some_repository.git some_repository
git submodule add -b
possa prendere un tag o uno sha1hash. Può solo prendere un ramo.
-b
il supporto di branch e non tag o commit shas è una funzionalità non un bug (in effetti -b
è una scorciatoia per --branch
).