ted*_*suo 49 git git-submodules
我真的很喜欢这个命令来获取子模块的repo:
git clone git@github.com:my_user/my_repo.git --recursive
Run Code Online (Sandbox Code Playgroud)
但是,子模块到达时都设置为"无分支",我必须手动检查每个子模块.有没有办法递归拉取子模块并自动将分支设置为主?
小智 69
克隆包含子模块的存储库后,以下命令将一次性检出所有这些的主分支:
git submodule foreach --recursive git checkout master
Run Code Online (Sandbox Code Playgroud)
Mau*_*ord 55
怎么样:
git submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
初始化子模块内的所有子模块和子模块.不知道这是否会结账大师.
tcu*_*rdt 24
现在的问题是,为什么你检出高手.您的子模块固定到特定的sha - 这也是子模块克隆固定到该特定提交的原因.通过不指向特定的sha,外部仓库很容易破坏你的构建.绝对不是你想要的.更有意识地更新.构建应该是可重现的并且尽可能地修复.
正如已经回答
git submodule foreach --recursive git checkout master
Run Code Online (Sandbox Code Playgroud)
为分支master做这项工作。
但是如果它是一个不存在于所有子模块中的分支,则可以使用
git submodule foreach --recursive "git checkout branchname || true"
Run Code Online (Sandbox Code Playgroud)
否则,该命令将在没有指定分支的第一个 repo 上失败。