Со временем у меня собралось много игрового кода, который используется во множестве игр. Что бы не заниматься копипастом из проекта в проект, мучительно вспоминая, где же более «свежая» версия (т.к. дата не является признаком самой свеже реализации), я вынес все нужное во внешние модули. Процесс переноса кода во внешние модули длится до сих пор, т.к. появляются новые решения, которым самое место в отдельном модуле.
И вот обновление модулей в проекте у меня выглядело как-то так:
cd third-party/module_1 ; git pull ; cd - cd third-party/module_2 ; git pull ; cd - # ... cd third-party/module_n ; git pull ; cd -
Что порой очень утомляло. В итоге лень победила и я открыл для себя новую команду:
git submodule foreach git pull origin master