git子模块的简单使用

子模块概述

git子模块为git主项目下 独立 出来的 git仓库 ,可 单独 的进行代码的修改、提交、更新等操作。

子模块使用

添加子模块

1
$ git submodule add <url>

url 为子模块git仓库地址,我们只需要进入 主项目 的根目录或者 指定 目录 下,执行此命令即可。

查看子模块文件变化

1
$ git diff --submodule

提交子模块

提交子模块与提交普通git一致,但需要进入子模块所在的仓库,单独提交。与此同时,若此子模块在主工程中,则主工程也需执行提交。

更新子模块

更新子模块与更新普通git一致,但需要进入子模块所在的仓库,单独更新。

删除子模块

1
2
3
4
$ git rm --cached [name]
$ rm -rf [name]
$ rm .gitmodules
$ vim .git/config

删除子模块相关内容,例如下面的内容

1
2
3
[submodule "submodule"]
url = git@gitee.com:xxx.com/submodule.git
active = true

然后提交(主项目)修改信息至远程服务器

克隆有子模块的项目

克隆主工程

1
$ git clone <url>

url 为项目git仓库地址

上面命令执行完成后,主项目仓库的代码会全部拉取到本地,但是子项目却只是一个文件夹。此时,必须对子模块进行 初始化更新

子模块初始化

1
$ git submodule init

子模块更新

1
$ git submodule update

若在 git clone 后加入 --recursive 字段,也可以实现子模块初始化及更新操作。

1
$ git clone --recursive <url>

克隆带有子模块的项目,并更新子模块数据。

子模块在Xcode上的使用

git子模块适用于iOS项目,但由于iOS项目不只是简单的文件读取,需要 Target 引用,故子模块的 修改提交 需在 主工程 中进行。如此,则引用关系会跟随主项目修改提交,一并上传到远程服务器,其他用户下拉的代码,则包含子模块的引用关系。否则,只是简单的文件引入而没有引用关系,会导致子模块在项目中无法使用。

上次更新 2018-08-28