添加 submodule
在主项目中添加一个子模块。
# 在主项目中执行
git submodule add <submodule-repository> [<path>]
# 例如在主项目 main-project 中添加 components
# cd main-project/
# git submodule add git@xxx.xxx.com/components.git components
clone 主项目和子模块
直接执行 git clone 时,不会将子模块的代码同步 clone 下来。 有两种方式可以 clone 主项目代码和子模块代码。
方式一:
git clone <main-project-repository>
git submodule init
git submodule update
方式二:
git clone <repository> --recurse-submodules
拉取子模块代码
子模块远程代码更新了,需要在主项目中拉取远程子模块的代码。 本地拉取完子模块代码之后,需要提交下主项目。
有两种方式拉取子模块代码。
方式一:
# 进到子模块目录,拉取代码
cd components
git checkout master
git pull
方式二:
# 进到主项目
cd main-project
# 拉取远程的子模块代码到本地
git submodule update --remote
本地拉取完子模块代码之后,相当于修改了主项目中保存的记录,所以需要提交下主项目。
拉取主项目代码和子模块代码
主项目远程代码更新了,主项目中使用 git pull 代码只会拉取主项目中的记录,不会拉取子模块的代码到本地。 有两种方式可以拉取子模块代码。
方式一:
# 在主项目中
cd main-project
# 更新主项目代码
git pull [--rebase]
# 根据主项目的记录更新本地子模块代码
git submodule update
方式二:
cd main-project
git pull --recurse-submodules
删除子模块
cd main-project
# 卸载子模块
# git submodule deinit components
git submodule deinit <path>
# 删除子模块文件夹
# git rm components
git rm <path>
# 删除 .git/modules/[submodule-name] 文件夹
# 删除 .git/config 文件中关于 [submodule-name] 的内容