如何克隆 git 存储库并在其默认分支上检出其子模块?

问题描述 投票:0回答:3

关于问题:

  1. 如何正确调用符号链接的 git 子模块?

我们发现执行

git clone --recursive
时有必要将 git 子模块检出到其默认分支,但如何做到这一点?

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

  1. 轻松拉取所有子模块的最新版本

建议使用命令

git clone --recurse-submodules
,但在克隆存储库后,其子模块仍然没有在默认分支上检出。

git git-branch git-submodules
3个回答
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/.*: //')"

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


2
投票

git submodule foreach git checkout master


0
投票

这是另一个简单的单行:

git submodule foreach -q --recursive 'branch="$(git symbolic-ref refs/remotes/origin/HEAD --short)"; git checkout $branch'
© www.soinside.com 2019 - 2024. All rights reserved.