其实用git的时间还是挺久的,但竟然不晓得git的子模块,瞬间有种”问今乃何世,不只有汉,无论魏晋“的赶脚,羞的老脸发红。
应用场景
- 剥离代码公共部分。
工作中,每个人或公司在长时间的coding中都形成常用的代码工具库,将这些公共部分剥离出来,做单点维护。
- 间接的实现目录权限的管理。
git没有更细的权限管理功能,如果希望对某些文件夹实现权限管理,从而在团队合作中,只需要关注或维护自己关注的文件夹就ok了。
如何使用
子模块使用起来比较简单,他即可以看做一个子模块,也可以看做一个完整的git工程,原来的git命令在子模块下照常使用。
添加子模块
进入到主目录执行
git submodule add 地址
查看执行后的状态,会发现主目录下多了一个.gitmodules文件和一个git工程
git status
提交子模块(和普通提交修改一样)
git commit -m xxx
通常作为公共部分最重要的是获取更新,有两种方式
- 首先在主目录下直接获取所有子模块
git submodule foreach git pull
-在主目录下更新子模块
git pull
git submodule update
- 在子模块下获取更新(就是一个普通的git工程)
git pull
首次clone带有子模块的工程,也有两种方式
- 使用--recursive递归参数,一哈子都clone下来了
git clone 地址 --recursive
- 分部获取,现获取主目录,在初始化子模块(推荐,条理清楚)
git clone 地址
git submodule init
git submodule update
删除子模块(把模块的两个文件删了就得了)