subModule其实就是sourceTree中的tree,为什么要引入tree那?当项目中有一部分模块想要做成单独的一个组件形式,但是这个组件可能经常改动代码,这个时候做成我们的公有库或者私有库就不太好维护了,所以这个时候tree这种模式就出现了,我们可以把这部分代码放到私有库的形式放到单独的git仓库中,又可以在我们项目中动态的维护这部分的代码,这就是tree这种结构的好处.
(一)在当前工程添加submodule,命令如下:
git submodule add 私有库地址 路径
私有库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径。 注意:路径不能以 / 结尾(会造成修改不生效)、不能是现有工程已有的目录(不能順利 Clone)
如果在sourcetree中,会在子模块目录下发现添加进来的subModule模块
(二)subModule移除
1.现将sourcetree里的对应的subModule子树删除
2.删除项目根目录下.gitmodules 里的地址
[submodule "rice-ios/ios-libs-web"] 以及对应的url地址和path
3.删除.git/config里对应的subModule信息
4.删除缓存
git add .gitmodules
git submodule update
{}内部是对应模块相对cd到目录的相对路径
最后一步:rm -rf .git/modules/rice-ios/{MOD_NAME} 删除.git/modules里的文件
其中模块目录就是子模块相对于项目根目录的相对路径
大功告成
添加subModule
只需要执行命令
git submodule add git私有库地址 (这种情况下是存放路径存在的情况下)
git submodule add git私有库地址 存放的相对路径 (这种情况是没有响应的目标文件夹下可以在相对路径中自动创建)
欢迎关注我的公众号,专注iOS开发、大前端开发、跨平台技术分享。