Create

Use the standard way of creating a submodule and adding it to .gitsubmodules.

In the next bit, the recursive part comes.

Update

We need to --recursive to include submodules. And --init in case they were not initialized.

$ git submodule update --init --recursive

Going further to update each submodule in there. From SO.

$ git submodule update --init --recursive
$ git submodule foreach --recursive git fetch
$ git submodule foreach git merge origin master