Basically, to use below command 1), you will get full foo repo. But sometime since the network or other issues, the clone will break. That means you will not get all submodules. So you can use below command 2) to fix it.

1) git clone --recursive https://github.com/foo
2) git submodule update --init --recursive

If you want to update your repo, do that:

git submodule foreach --recursive git pull origin master