Man*_*ish 50 git git-submodules
我有git repo,它有嵌套的子模块.以下2个命令有什么区别?
git submodule update --init --recursive
git submodule foreach --recursive git submodule update --init
Run Code Online (Sandbox Code Playgroud)
Mar*_*tin 49
git submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
子模块update命令将递归到已注册的子模块,更新和初始化(如果需要)以及其中的任何嵌套子模块.
git submodule foreach --recursive git submodule update --init
Run Code Online (Sandbox Code Playgroud)
foreach将评估每个签出子模块中的命令.因此它将更新和初始化(如果需要)每个子模块和任何嵌套的子模块--recursive.
所以最后,两个命令都会达到同样的效果.只是执行不同,第一个命令不会进入每个目录来执行命令.
根据我的经验,第一个有效.第二个什么也没做.
对于像eclipse.platform.releng.aggregator这样的项目来初始化子模块以便你可以构建,你需要克隆所有子目录:
git submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
小智 5
存在差异!
git submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
将注册直接依赖的子模块并克隆它们,然后进入下一个深度,注册子模块并递归克隆它们。最后,所有直接或间接依赖的子模块都将从远程注册和克隆。 如果存在循环依赖,该命令将永不终止。
git submodule foreach --recursive git submodule update --init
Run Code Online (Sandbox Code Playgroud)
此命令遵循模板:
git submodule foreach --recursive "your command"
Run Code Online (Sandbox Code Playgroud)
这意味着首先,“git submodule foreach --recursive”将生成一个子模块集,然后在每个子模块中,您的命令被执行。但是,对于没有执行“git submodule init”然后“git submodule update”的初始项目,“git submodule foreach --recursive”将为空,因此“您的命令”根本不会发生。
| 归档时间: |
|
| 查看次数: |
48398 次 |
| 最近记录: |