如何克隆git存储库及其子模块checkout在其默认分支上?

时间:2017-06-16 15:41:17

标签: git git-branch git-submodules

关于这个问题:

  1. How to correctly call a git submodule symlinked?
  2. 当发现git clone --recursive时,有必要将git子模块签出到默认分支,但是如何做到这一点?

    我尝试搜索并发现了另一个问题:

    1. Easy way pull latest of all submodules
    2. 建议使用命令git clone --recurse-submodules,但在克隆存储库后,其子模块仍未在默认分支上签出。

2 个答案:

答案 0 :(得分:2)

git submodule foreach git checkout master

答案 1 :(得分:2)

您可以使用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/.*: //')"

当然,这取决于已经克隆了子模块。