2023年8月20日日曜日

git submodule で管理しているサブモジュールが全部 HEAD detached になったから一括でデフォルトブランチに直す

前提

  • OS: WSL 上の Ubuntu 20.04
  • git: git version 2.25.1

やりかた

対象の git リポジトリで以下コマンドを実行。

git submodule foreach "git switch \$(git symbolic-ref refs/remotes/origin/HEAD | cut -f4 -d'/')"

解説

git symbolic-ref refs/remotes/origin/HEAD で、デフォルトブランチが取得できる。

デフォルトブランチは、 refs/remotes/origin/<DEFAULT_BRANCH_NAME> という形式で出力されるので、 cut コマンドで「‘/’ 区切りの 4 番目の値」を取ってくる。

参照資料