如果您使用--recursive
参数进行git clone
操作,则可以获取所有的git子模块。
如果我在克隆时忘记添加此神奇的标志,那该怎么获取任何子模块呢?
另外,如何将递归标志设置为将来克隆的默认选项?
如果您使用--recursive
参数进行git clone
操作,则可以获取所有的git子模块。
如果我在克隆时忘记添加此神奇的标志,那该怎么获取任何子模块呢?
另外,如何将递归标志设置为将来克隆的默认选项?
从你的代码库的根目录开始:
$ git submodule update --init --recursive
这将更新所有已注册的子模块,如果需要,则将它们初始化为在.gitmodules文件中找到的值,并递归到复杂的子模块(具有自己的子模块)并初始化和更新它们。
我知道的使克隆递归成为默认方式最简单的方法是使用别名来替代 git clone
命令。
$ git config --global alias.clone = 'clone --recursive'
就一直添加选项而言,我认为这是惯用的方法。
IIRC,
git submodule init
,
git submodule update
不过很遗憾,我没有看到默认启用递归的选项。
init
之后但在 update
之前在配置文件中更改子模块仓库的 URL。对于一些子模块已经设置为私有仓库 URL 的仓库,你需要将其更改为公共 URL,因此需要进行此操作。 - Abizern
$ git config --global alias.cloner = 'clone --recursive'
。 - Abizerngit config --global alias.clone 'clone --recursive'
。 - ELLIOTTCABLEalias.clone
将被完全忽略。 - Jez