总结自:
上文记录了在子项目内修复detached head的方法,使用中发现是因为submodule使用不当引起的,当clone项目到其他位置时子项目内仍然是detached head。若对每个子项目都是用上文方法修复太过于麻烦,所以又查了两个修复方法,记录在此。
- 重新建立submodule,加入时使用
-b
参数,使得母项目追踪子项目的指定branch(否则默认不追踪):
git submodule add -b <branch> <repository> [<submodule-path>]
git submodule update --remote
- 简单的一行命令递归修复所有子项目的detached head(其中默认都追踪子项目的master branch):
git submodule foreach -q --recursive 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'