1. リポジトリ内で、git submodule initを実行し、必要なsubmoduleを初期化する。これで、.gitmodulesファイル内のすべてのsubmoduleが初期化される。
  2. git submodule updateを実行し、各submoduleの内容を取得する。これで、submoduleの指定されたコミットがチェックアウトする。
git switch <branch-name>
git submodule update --init

git submodule update --initが使える。これはgit submodule initgit submodule updateを組み合わせたものだ。

  1. すでにサブディレクトリが存在し、それが空でない場合、次のようなエラーが表示されることがある。
> git switch <branch-name>
warning: unable to rmdir 'themes/hoge: Directory not empty
branch '<branch-name>' set up to track 'origin/<branch-name>'.
Switched to a new branch '<branch-name>'

この問題を解決するには、themes/hogeディレクトリを手動で削除するか、内容を別の場所に移動する必要がある。

# ディレクトリを移動または削除する
mv themes/hugo-book /path/to/new/location/
# または
rm -rf themes/hugo-book

上記の問題が解決したら、サブモジュールを初期化し、アップデートする。

git submodule update --init

これで完了です。