2022 / 02 / 27
git-submodule使用指南
起因是这样的,有时候我们的项目中又使用到了另外一个项目,说白点就是就是一个git项目中包含了其他子git项目。
引入
假设我们有两个及以上项目,一个叫notebook,一个叫loho-docs,notebook是主工程,loho-docs是子模块工程。我们希望在notebook中添加loho-docs,而又保持loho-docs的独立版本控制。
创建submodule
使用 git submodule add <submodule_url> <project_name> 命令可以在项目中创建一个子模块
在notebook的根目录下执行如下命令
git submodule add https://gitee.com/xxx/loho-docs loho-docs
这时候,项目仓库中就会多出两个文件:.gitmodules 和 loho-docs

.gitmodules的信息
[submodule "loho-docs"]
path = loho-docs
url = https://gitee.com/xxx/loho-docs
然后提交一下commit,提交到远程看一下效果。
git commit -am "增加文档子模块"
git push origin master
此时再看git库,这里的loho-docs文件夹,点击会跳到loho-docs的git库,至此submodule添加成功。

注意此时用git clone 拉取 notebook项目是不带 submodule 代码的。需要再执行
git submodule init
git submodule update
则会根据主项目的配置信息(.gitmodules),拉取更新子模块中的代码。
更新submodule
如果我们在主项目和子项目做了修改的话,他其实是分开commit的,可以分开提交。

删除submodule
// 修改 .git/config ,删除 loho-docs 文件下所有的代码
git submodule deinit loho-docs
// .gitmodule 文件内容清空,删除 Water 文件夹
git rm Water
// 提交代码
git commit -m "rm Water"
// 推到远程
git push origin master
此时子模块就会被删除。