Aggiornamento marzo 2013
Git 1.8.2 ha aggiunto la possibilità di tenere traccia dei rami.
" git submodule
" ha iniziato ad apprendere una nuova modalità da integrare con la punta del ramo remoto (invece di integrarsi con il commit registrato nel gitlink del superprogetto).
# add submodule to track master branch
git submodule add -b master [URL to Git repo];
# update your submodule
git submodule update --remote
Se tu avessi un modulo già presente ora che tu voglia sarebbe traccia di un ramo, vedere " come creare un modulo esistente traccia un ramo ".
Vedi anche il tutorial di Vogella sui sottomoduli per informazioni generali sui sottomoduli.
Nota:
git submodule add -b . [URL to Git repo];
^^^
Vedi la git submodule
pagina man :
Un valore speciale di .
viene utilizzato per indicare che il nome del ramo nel sottomodulo deve avere lo stesso nome del ramo corrente nel repository corrente .
Vedi commit b928922727d6691a3bdc28160f93f25712c565f6 :
submodule add
: Se --branch
viene fornito, registralo.gitmodules
Ciò consente di registrare facilmente submodule.<name>.branch
un'opzione .gitmodules
quando si aggiunge un nuovo sottomodulo. Con questa patch,
$ git submodule add -b <branch> <repository> [<path>]
$ git config -f .gitmodules submodule.<path>.branch <branch>
riduce a
$ git submodule add -b <branch> <repository> [<path>]
Ciò significa che il futuro chiama
$ git submodule update --remote ...
riceverà aggiornamenti dallo stesso ramo che hai usato per inizializzare il sottomodulo, che di solito è quello che vuoi.
Autografato da: W. Trevor King
Risposta originale (febbraio 2012):
Un sottomodulo è un singolo commit a cui fa riferimento un repository principale.
Dal momento che è un repository Git da solo, la "storia di tutti i commit" è accessibile attraverso un git log
sottomodulo.
Quindi, affinché un genitore tenga traccia automaticamente dell'ultimo commit di un determinato ramo di un sottomodulo, dovrebbe:
- cd nel sottomodulo
- git fetch / pull per assicurarsi che abbia gli ultimi commit sul ramo giusto
- cd nel repository principale
- aggiungere e eseguire il commit per registrare il nuovo commit del sottomodulo.
gitslave (che hai già visto) sembra essere la soluzione migliore, anche per l'operazione di commit .
È un po 'fastidioso apportare modifiche al sottomodulo a causa della necessità di effettuare il checkout sul ramo del sottomodulo corretto, apportare la modifica, eseguire il commit e quindi passare al superproject e eseguire il commit (o almeno registrare la nuova posizione del modulo).
Altre alternative sono dettagliate qui .