Git sta facendo esattamente quello che dovrebbe fare. git submodule update
imposterà il tuo submodule su ciò che il commit corrente nel repository padre specifica che il sottomodulo dovrebbe avere. In questo modo è possibile eseguire il checkout di un altro ramo, commit o tag precedente, quindi eseguire git submodule update
e il sottomodulo verrà impostato su ciò che si aspetta tale riferimento in modo che l'intera soluzione abbia le dipendenze soddisfatte.
Quello che dovete fare è:
cd mysubmoduledir
git fetch
git checkout master # or any other branch that you need the latest of
git merge origin/master
cd - # go back to the top repo
git status # should show that your submodule changed
git add mysubmoduledir
git commit -m "Updated my solution to use latest sub project."
una versione più breve è:
cd mysubmoduledir
git pull # assumes you are already on the branch you need to be on
cd -
git commit -am "Updated submodule" # assumes you had no other modified files
La parola "aggiornamento" non è il migliore per questo comando modulo. Significa davvero "puntare il sottomodulo sul commit che il commit del repository padre si aspetta".
L'aggiornamento di un sottomodulo a un commit diverso (non deve essere l'ultimo) richiede di effettuare il cd in tale directory, manipolarlo come un normale repo git in modo che il commit corrente sia ciò che si desidera, quindi tornare indietro e commettere questa modifica sul repository di livello superiore.
fonte
2012-12-12 17:49:17
Che nome ridicolo per un comando ?! Ovviamente dovrebbe essere git submodule etadpu –
Pensare a questo "git submodule ilikepancakes" probabilmente avrebbe molto senso. E se qualcuno non è d'accordo, si prega di leggere una saggia presentazione sulla struttura delle apis dello spazio del kernel: http://man7.org/conf/lca2013/Why_kernel_space_sucks-2013-02-01-printable.pdf –
Ulteriori dettagli sull'uso di 'git submodule ': https://chrisjean.com/git-submodules-adding-using-removing-and-updating/ –