子模块概述
git子模块为git主项目下 独立
出来的 git仓库
,可 单独
的进行代码的修改、提交、更新等操作。
子模块使用
添加子模块
1 | $ git submodule add <url> |
url
为子模块git仓库地址,我们只需要进入 主项目
的根目录或者 指定
目录 下,执行此命令即可。
查看子模块文件变化
1 | $ git diff --submodule |
提交子模块
提交子模块与提交普通git一致,但需要进入子模块所在的仓库,单独提交。与此同时,若此子模块在主工程中,则主工程也需执行提交。
更新子模块
更新子模块与更新普通git一致,但需要进入子模块所在的仓库,单独更新。
删除子模块
1 | $ git rm --cached [name] |
删除子模块相关内容,例如下面的内容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
引用,故子模块的 修改
、 提交
需在 主工程
中进行。如此,则引用关系会跟随主项目修改提交,一并上传到远程服务器,其他用户下拉的代码,则包含子模块的引用关系。否则,只是简单的文件引入而没有引用关系,会导致子模块在项目中无法使用。