La lista delle frustrazioni
I submodule sono potenti ma fanno inciampare ripetutamente i nuovi utenti. Questa pagina cataloga i fallimenti piu comuni e le ricette che li risolvono.
Directory submodule vuota
git submodule update --init --recursive
Modifiche in detached HEAD perse
cd third_party/lib
git reflog
git checkout -b rescue HEAD@{1}
URL cambiato a monte
git submodule sync --recursive
git submodule update --init --recursive
Rimuovere un submodule
git submodule deinit -f third_party/lib
git rm -f third_party/lib
rm -rf .git/modules/third_party/lib
git commit -m "Remove lib submodule"
Contenuto modificato ma nessun diff
git submodule update --recursive
git add third_party/lib && git commit -m "Bump lib"
L'ordine di push conta
git config --global push.recurseSubmodules on-demand
Submodule shallow
git submodule update --init --recursive --depth 1
Errori comuni
Trattare i submodule come sottodirectory normali — non lo sono. Mescolare submodule con tracking di branch con flussi di SHA fissati genera confusione.