一、 github 建立 submodule
- github 上建立我们的 submodule。
二、本地仓库建立
- 建立本地仓库。
git submodule add https://github.com/
- 使用该命令,可以在本次仓库添加子模块(submodule)。
- 注意:子模块本质上是另一个代码仓库,对 submodule 的修改,只能在 submodule 对应的代码仓库修改和提交,然后由父代码仓库(即我们的 git_test 代码仓库)更新它下面的 submodule 最新状态。
- 父代码仓库提交 commit:更新子模块的状态。
- 同时,我们注意到:git 版本库中也增加了对 submodule 模块的 git 对象库的管理。
- 现在,我们在 github 上创建我们的远程仓库。
- 然后将本地仓库的代码推送到远程仓库。
- 然后我们回到远程仓库,可以看到
- .gitmodules 文件记录了当前仓库的所有子模块的文件名和 url 地址。
- 点击子模块的文件名,可以跳转到 submodule 对应的代码仓库。
- 我们删除本地仓库,然后重新从远程仓库拉取代码。
- 我们发现,从远程仓库直接拉取下来的代码,缺少了 .git/modules/git_submodules 目录。
- 父代码仓库的 git_submodules/ 目录为空。
三、子模块需要手动拉取
1. submodele 是空的目录
git submodule update --init --recursive
2. submodele 是非空的目录
- 起初父代码仓库的本地 submodule 和远程仓库的 submodule 是一致的。
- 当远程仓库的 submodule 进行了新的提交,父代码仓库的 submodule 不会自动更新。
- 使用命令:
git submodule update --remote
进行 submudule 的更新。
- 接着,父代码仓库还要提交 submodule 的更新。
- 最后,将本地仓库上传到远程仓库。