回顾性地添加——递归到 git repo

如果您使用 --recursivegit clone,您也可以得到所有的 git 子模块。

如果我忘记在克隆时添加这个神奇的标志,那么我现在如何去获得子模块呢?

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

20257 次浏览

IIRC, git submodule init, git submodule update

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

  1. 从你的回购的根源:

    $ git submodule update --init --recursive
    

    这将更新任何和所有已注册的子模块,如果需要,将它们初始化为。Gitmodule 文件,还可以递归到复杂的子模块(有自己的子模块的子模块) ,并对它们进行初始化和更新。

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

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

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

你可以在一个简单的顶级克隆之后使用它:

git submodule update --init --recursive

我不建议让克隆默认这样做。如果你正在积极地使用子模块进行开发,而不仅仅是链接到第三方的 OSS 库,你可能会很少升级,那么正确的方法是使用 混蛋奴隶或者 子树

希望这个能帮上忙。

看起来你不能用别名“克隆”覆盖“克隆”,所以它是一个新的别名(Abizern 的解决方案)或者“——递归”。

可以用 git 别名覆盖 git 命令吗?