73

如果你git clone--recursive,你也可以得到所有的 git 子模块。

如果我在克隆时忘记添加这个神奇的标志(可能发生),我现在该如何去获取任何子模块?

此外,如何将递归标志设置为未来克隆的默认值?

4

4 回答 4

102

你可以在一个简单的顶级克隆之后这样做:

git submodule update --init --recursive

我不建议让克隆默认执行此操作。如果您正在积极地使用子模块进行开发,而不仅仅是链接到 github 上的第 3 方 OSS 库(您可以在蓝月亮中升级一次),那么正确的方法是使用git slavesubtree

希望这可以帮助。

于 2010-11-24T02:47:09.567 回答
14
  1. 从您的回购的根目录:

    $ git submodule update --init --recursive
    

    这将更新所有已注册的子模块,如果需要将它们初始化为 .gitmodules 文件中的值,并且还递归到复杂的子模块(具有自己的子模块的子模块)并初始化和更新它们。

  2. 我所知道的使递归克隆成为默认值的最简单方法是git clone使用别名隐藏

    $ git config --global alias.clone = 'clone --recursive'
    

    至于总是添加选项,我认为这是惯用的方法。

于 2010-11-23T21:12:07.787 回答
1

IIRC git submodule init,,, git submodule update

不幸的是,我没有看到默认启用递归的选项。

于 2010-11-23T01:51:27.617 回答
0

看来你不能用别名“clone”覆盖“clone”,所以它是一个新的别名(Abizern 的解决方案)或“--recursive”。

是否可以通过 git 别名覆盖 git 命令?

于 2014-01-28T00:44:04.780 回答