从Github上导入一个工程,submodule的目录却是空的:
git clone --recusive xxx.git
又用下列命令,目录终于有了
git submodule update --init --recursive
(这里的--recursive
是把submodule的submodule的submodule…也下载。如果只有一层的submodule依赖,也可以不用--recursive
)
令人奇怪的是,为什么第一个git clone --recursive
不起作用?
研究后发现,这跟Git版本有关。版本:2.25.1,使用的是:
git clone --recurse-submodules xx.git
总结,submodule情况下,初次克隆仓库,在2.13以上版本:
git clone --recurse-submodules xx.git
在其他版本:
git clone --recursive xx.git
如果已经克隆下来的仓库,要克隆子模块,用:
git submodule update --init --recursive
其中init
不能省,否则目录仍是空的。它相当于下面两条命令的组合:
git submodule init
git submodule update
参考:
https://vsupalov.com/git-fix-submodule/
克隆时忘记submodule的解决方法
https://github.blog/2016-02-01-working-with-submodules/
在Git仓库中新增submodule,如何将已存在的Git工程作为submodule,从已存在的Git工程中剥离一个文件夹作为submodule
https://www.w3docs.com/snippets/git/how-to-clone-including-submodules.html
不同版本的Git的克隆Git仓库带submodule如何克隆