Git 子模块

Submodule解决了什么问题

当你的项目里依赖与一个第三方模块,或者一个子项目,而你须要保持这个模块的更新,确保使用这个子模块的全部项目都能同步到,若是拷贝的话就达不到这个目的,总之一句话就是在一个库里能够包含多个子库,而且主库和子库是隔离的,互不影响.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

gitsubmodule01

而后提交此次的改动3d

git commit -am "added submoudle let's go"
复制代码

推送到远程仓库code

git push -u origin master(因为是第一次入库须要设置下默认上游)
复制代码

而后咱们修改下子库,提交cdn

git commit -am "修改子模块可是并不提交子模块的修改"
复制代码

会发现 git 提示咱们有修改blog

gitsubmodule02

若是咱们尝试推送到远程库,会发现并无在子模块的修改并未在主模块生效,由于咱们没有在子模块推送此次修改文档

而后咱们新建一个目录,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
复制代码

以上只是子模块最简单的一些使用,想要了解的更新,请移步官方文档

相关文章
相关标签/搜索