回顾性地添加--recursive到git repo

时间:2010-11-23 01:35:08

标签: git version-control git-submodules git-clone

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

如果我忘记在克隆时添加这个神奇的旗帜,可能会发生,我现在如何去获取任何子模块?

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

4 个答案:

答案 0 :(得分:71)

您可以在简单的顶级克隆之后使用此功能:

git submodule update --init --recursive

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

希望这有帮助。

答案 1 :(得分:10)

  1. 从您的回购根源:

    $ git submodule update --init --recursive
    

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

  2. 我知道以递归方式克隆的最简单方法是使用别名

    来隐藏git clone
    $ git config --global alias.clone = 'clone --recursive'
    

    就总是添加选项而言,我认为这是惯用法。

答案 2 :(得分:1)

IIRC, git submodule initgit submodule update

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

答案 3 :(得分:0)

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

Is it possible to override git command by git alias?