关于问题:
我们发现执行
git clone --recursive
时有必要将 git 子模块检出到其默认分支,但如何做到这一点?
我尝试搜索并发现了另一个问题:
建议使用命令
git clone --recurse-submodules
,但在克隆存储库后,其子模块仍然没有在默认分支上检出。
您可以使用
git submodule foreach
在每个子模块中运行任意命令。 --recursive
标志将在子模块的子模块中递归。 git remote show [name-of-remote]
将显示哪个分支 [name-of-remote]
当前处于活动状态。将它们与其他一些工具结合起来清理 git remote show
的输出给出:
git submodule foreach --recursive "git checkout $(git remote show origin | grep 'HEAD branch' | sed 's/.*: //')"
当然,这取决于已经克隆了子模块。
git submodule foreach git checkout master
这是另一个简单的单行:
git submodule foreach -q --recursive 'branch="$(git symbolic-ref refs/remotes/origin/HEAD --short)"; git checkout $branch'