git submodule使用介绍
-
简介
项目中如果使用了公共的模块,在git中通过git submodule使用公共模块的功能能提高开发效率,使用后主项目代码就不用维护公共模块,只需要同步更新公共模块即可,其实就是git的公共库管理工具。
-
如何使用
在system项目中引入子模块leetcode
git submodule add <仓库地址> <本地路径>
新建一个父仓库, 一个子仓库。先将父仓库克隆到本地
git clone git@github.com:neuskb/system.git
到父仓库,添加子仓库
git submodule add git@github.com:neuskb/leetcode.git leetcode
添加成功后,在父仓库目录下增加了两个文件
$ git status On branch master Your branch is up to date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: .gitmodules new file: leetcode
可以看到.gitmodule文件中的内容
$ cat .gitmodules [submodule "leetcode"] path = leetcode url = git@github.com:neuskb/leetcode.git
再看父仓库的git配置文件
[submodule "leetcode"] url = git@github.com:neuskb/leetcode.git active = true
克隆
克隆包含子仓库的目录,并不会clone子仓库文件,需要执行命令才能克隆
git submodule init git submodule update
或者
git submodule update --init --recursive
这个时候克隆下来的目录在一个未命名分支,如下:
$ git branch * (HEAD detached at e0fd5f0) master
切换到master分支,再执行git pull
Updating 75d67f2..27263fa Fast-forward README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
就可以更新到子项目的更新,再按需切换到你自己的分支,push上去即可。