第6章:子模块
使用场景
当我们现在项目中使用另一个项目,比如一个公用封装库,或者一个第三方库。这时候可以使用子模块的方式。
我们自身项目在版本开发的时候,就可以随时更新子模块,不用再多操心了。
子模块的添加
git submodule add <url> <path>
其中,url为子模块的路径,path为该子模块存储的目录路径。
执行成功后,会看到项目中新增了一个.gitmodules文件,并新增了一个目录(即path指定的目录)。
再用git commit提交,完成子模块的添加。
注: .gitmodules是一个很重要的文件,他的显式存在,可以告诉使用者本项目存在子模块及其信息; 可以有多个子模块,会以列表的形式保存在.gitmodules文件中;
子模块的使用
克隆项目后,默认子模块目录下无任何内容。需要在项目根目录执行如下命令完成子模块的下载:
git submodule init
git submodule update
或:
git submodule update --init --recursive
执行后,子模块目录下就有了源码,再执行相应的makefile即可。
子模块的更新
子模块只能通过手动更新。
在子模块目录下,可以执行git pull更新,可以执行git log查看日志,都是我们已经熟悉的常规操作。
在子模块目录下,完成更新操作后,后返回到项目目录,可以看到子模块有待提交的更新,使用git add,提交即可。
删除子模块
有时需要替换子模块或者不需要了,就要删除原有的子模块。
删除子模块的步骤如下:
rm -rf 子模块目录 删除子模块目录及源码 vi .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目 vi .git/config 删除配置项中子模块相关条目 rm .git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可 执行完成后,再执行添加子模块命令即可,如果仍然报错,执行如下:
git rm --cached 子模块名称
完成删除后,提交到仓库即可。