什么是Git 子模块
开发中我们可能会遇到:某个工作中的项目需要包含并使用另一个项目。 可能是第三方库,也可能是独立的,复用于多个父项目的库。 那么问题来了:你想在一个项目中使用另一个,同时又想保持两个项目的相互独立。使用Git 自带的子模块功能就可以解决这个问题。
子模块的使用命令
创建子仓库
先进入父仓库目录下,然后执行命令:
git submodule add <仓库地址> <本地路径>
<本地路径>是可选项,默认情况下,子模块会在当前目录下面,将子项目放到一个与仓库同名的目录中。如果指定了本地路径,则会把子项目放在指定的本地路径下。
执行上面命令后,在父仓库根目录增加了.gitmodule文件。
[submodule 仓库名称]
path = 仓库名称(或指定的本地路径)
url = 仓库地址
clone 带有子仓库的git项目
git clone 带有子仓库的git仓库地址
这个命令并不会clone下子仓库的文件,只是会克隆下.gitmodule描述文件,需要执行下面的命令拉取子仓库文件。
// 初始化本地子项目配置
$ git submodule init
// 拉取子仓库文件
$ git submodule update
或者使用组合指令:
git submodule update --init --recursive
子仓库代码的修改和更新
如果在本地修改子仓库,在主仓库执行git status,会显示子仓库有修改。需要先在子仓库提交,然后再到主仓库提交代码。
由于父仓库和子仓库是两个独立的git仓库,所以最好在子仓库的开发中单独进行git相关操作,在父仓库不对子仓库文件做修改,只进行子仓库代码的拉取,并把修改提交上去。