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

ken*_*eth 61 git version-control git-clone git-submodules

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

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

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

Ada*_*ruk 77

您可以在简单的顶级克隆之后执行此操作:

git submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助.


Tim*_*her 10

  1. 从您的回购根:

    $ git submodule update --init --recursive
    
    Run Code Online (Sandbox Code Playgroud)

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

  2. 我知道以递归方式进行克隆的最简单方法是默认git clone使用别名进行阴影处理

    $ git config --global alias.clone = 'clone --recursive'
    
    Run Code Online (Sandbox Code Playgroud)

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

  • 你们两个都需要删除`=`标记:`git config --global alias.clone'clone --recursive'` (8认同)
  • 注意:这个答案是完全错误的***.git不会让你"影子别名"现有的git命令.`alias.clone`将被完全忽略. (3认同)