git clone https://example.com/repo-with-sub-modules --recursive
git submodule update --init --recursive
git submodule update --init --recursive
git submodule foreach git fetch # サブモジュールの最新情報を取得
git submodule status # ステータスを表示
cd sub-module # サブモジュールのディレクトリに移動
git fetch && git reset --hard origin/master # 適当なコマンドで、必要なバージョンをチェックアウトする
cd ../ # 親側に移動
git commit -a # 親側でコミット
エディタのオート補完機能などで間違ってsubmoduleに影響が及んでしまうことが結構あると思います。
cd sub-module # サブモジュールのディレクトリに移動
git reset --hard