当你的项目里依赖与一个第三方模块,或者一个子项目,而你须要保持这个模块的更新,确保使用这个子模块的全部项目都能同步到,若是拷贝的话就达不到这个目的,总之一句话就是在一个库里能够包含多个子库,而且主库和子库是隔离的,互不影响.git
咱们如今新建一个库叫 parentgithub
git clone git@github.com:hurryking/parent.git
复制代码
而后在 parent 下新建一个目录 childrenbash
cd parent
mkdir children
复制代码
进入 children 执行ui
cd children
git submodule add git@github.com:hurryking/let-s-go.git
复制代码
而后在 parent 下就能看到刚才加的子库,还有一个 .gitmodules 文件,里面记录着子库的在这个项目的路径和远程仓库的地址spa
而后提交此次的改动3d
git commit -am "added submoudle let's go"
复制代码
推送到远程仓库code
git push -u origin master(因为是第一次入库须要设置下默认上游)
复制代码
而后咱们修改下子库,提交cdn
git commit -am "修改子模块可是并不提交子模块的修改"
复制代码
会发现 git 提示咱们有修改blog
若是咱们尝试推送到远程库,会发现并无在子模块的修改并未在主模块生效,由于咱们没有在子模块推送此次修改文档
而后咱们新建一个目录,clone 下咱们刚才的 parent
git clone git@github.com:hurryking/parent.git
复制代码
会发现 clone 下来的项目中子库中并无东西,git 并无自动替咱们拉取子库的代码
咱们须要执行下面的命令初始化子库
git submodule init
复制代码
拉取子库最新代码
git submodule update
复制代码
或者有个更简单的办法在 clone 带recursive参数,会自动拉取全部子模块的代码
git clone --recursive git@github.com:hurryking/parent.git
复制代码
以上只是子模块最简单的一些使用,想要了解的更新,请移步官方文档