git-submodule使用指南

起因是这样的,有时候我们的项目中又使用到了另外一个项目,说白点就是就是一个git项目中包含了其他子git项目。

引入

假设我们有两个及以上项目,一个叫notebook,一个叫loho-docsnotebook是主工程,loho-docs是子模块工程。我们希望在notebook中添加loho-docs,而又保持loho-docs的独立版本控制。

创建submodule

使用 git submodule add <submodule_url> <project_name> 命令可以在项目中创建一个子模块

notebook的根目录下执行如下命令

1
git submodule add https://gitee.com/xxx/loho-docs loho-docs

这时候,项目仓库中就会多出两个文件:.gitmodulesloho-docs

L7ojjt

.gitmodules的信息

1
2
3
[submodule "loho-docs"]
path = loho-docs
url = https://gitee.com/xxx/loho-docs

然后提交一下commit,提交到远程看一下效果。

1
2
git commit -am "增加文档子模块" 
git push origin master

此时再看git库,这里的loho-docs文件夹,点击会跳到loho-docs的git库,至此submodule添加成功。

TZL33p

注意此时用git clone 拉取 notebook项目是不带 submodule 代码的。需要再执行

1
2
git submodule init
git submodule update

则会根据主项目的配置信息(.gitmodules),拉取更新子模块中的代码。

更新submodule

如果我们在主项目和子项目做了修改的话,他其实是分开commit的,可以分开提交。

RSEXPO

删除submodule

1
2
3
4
5
6
7
8
9
//  修改 .git/config ,删除 loho-docs 文件下所有的代码
git submodule deinit loho-docs

// .gitmodule 文件内容清空,删除 Water 文件夹
git rm Water
// 提交代码
git commit -m "rm Water"
// 推到远程
git push origin master

此时子模块就会被删除。


git-submodule使用指南
https://iplus-studio.top/2022/02/27/git-submodule使用指南/
作者
邓伟彬
发布于
2022年2月27日
许可协议