【发布时间】:2011-05-14 05:01:42
【问题描述】:
如果你git clone 和--recursive,你也可以得到所有的 git 子模块。
如果我在克隆时忘记添加这个神奇的标志,我现在该如何去获取任何子模块?
此外,如何将递归标志设置为未来克隆的默认值?
【问题讨论】:
标签: git version-control git-submodules git-clone
如果你git clone 和--recursive,你也可以得到所有的 git 子模块。
如果我在克隆时忘记添加这个神奇的标志,我现在该如何去获取任何子模块?
此外,如何将递归标志设置为未来克隆的默认值?
【问题讨论】:
标签: git version-control git-submodules git-clone
从你的 repo 的根目录:
$ git submodule update --init --recursive
这将更新所有已注册的子模块,如果需要将它们初始化为 .gitmodules 文件中的值,并且还递归到复杂的子模块(具有自己的子模块的子模块)并初始化和更新它们。
我知道的最简单的递归克隆方法是使用别名隐藏git clone
$ git config --global alias.clone = 'clone --recursive'
至于总是添加选项,我认为这是惯用的方法。
【讨论】:
$ git config --global alias.cloner = 'clone --recursive'
=标记:git config --global alias.clone 'clone --recursive'
alias.clone 将被完全忽略。
IIRC,
git submodule init,
git submodule update
不幸的是,我没有看到默认启用递归的选项。
【讨论】:
init 之后但在update 之前。您需要为一些已使用私有存储库的 url 设置子模块的存储库执行此操作,并且您需要将这些更改为公共 url。
看来您不能用别名“clone”覆盖“clone”,所以它是一个新别名(Abizern 的解决方案)或“--recursive”。
【讨论】: