Android Git submodule详解用法示例
作者:临木小屋 时间:2021-10-23 11:39:03
引入
假定我们有两个项目:Cup 和 Water,其中 Cup 表示主项目,而 Water 表示子模块项目。
其中 Cup 的远程仓库地址为 git@github.com:SkyMissT/Cup.git
而 Water 的远程仓库地址为 git@github.com:SkyMissT/Water.git
接下来,我们希望在 Cup 中添加 Water ,而又保持 Water 自身独立的版本控制。
创建 submodule
使用 git submodule add <submodule_url> 命令可以在项目中创建一个子模块
先 cd 到 Cup 项目的根目录,执行以下命令
git submodule add git@github.com:SkyMissT/Water.git
此时项目仓库中会多出两个文件:.gitmodules 和 water
.gitmodules中的信息
[submodule "Water"]
path = Water
url = git@github.com:SkyMissT/Water.git
添加后要再提交一次,远程才能有信息
git commit -m "add submodule xxx"
git push
此时再看git库,这里的Water文件夹,点击会跳到Water的git库,至此submodule添加成功
拉取带有 submodule 的项目
带有submodule的项目直接用 git clone git@github.com:SkyMissT/Cup.git
拉下的代码是不包含 submodule 代码的
git clone git@github.com:SkyMissT/Cup.git --recurse-submodules
这样会递归地将项目中所有子模块的代码拉取。另外一种可行的方式是,在当前主项目中执行:
git submodule init
git submodule update
则会根据主项目的配置信息(.gitmodules),拉取更新子模块中的代码。
本地配置
配置 setting.gradle
include ':Water:app'
配置 build gradle
implementation project(path: ':Water:app')
代码提交
主项目上的代码提交
比如我们主项目与module都做了修改,commit时候是这样的
可以选择只提交一部分,也可以都选择提交,提交到他们各自的仓库,再看 push 的样子
与commit情况类似,可选择的push到远程库
submodule独立项目上的代码提交
与一般的代码提交一样,操作都一样。主项目中的submodule模块push后Water项目该有的全有,Water项目push后主项目也会有
删除 submodule
// 修改 .git/config ,删除 Water 文件下所有的代码
git submodule deinit Water
执行git submodule deinit Water
之前
执行git submodule deinit Water
之后,submodule“Water”被移除
// .gitmodule 文件内容清空,删除 Water 文件夹
git rm Water
// 提交代码
git commit -m "rm Water"
// 推到远程
git push
submodule 被移除
来源:https://blog.csdn.net/xihuailu3244/article/details/119028565
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
探讨Object转为String的几种简易形式详解
mybatis-plus 查询传入参数Map,返回List<Map>方式
![](https://img.aspxhome.com/file/2023/2/72592_0s.png)
C#实现扫雷游戏
![](https://img.aspxhome.com/file/2023/5/70395_0s.jpg)
spring mvc4中相关注解的详细讲解教程
Spring Boot如何优化内嵌的Tomcat示例详解
java实现List中对象排序的方法
C#使用iTextSharp添加PDF水印
Android RecyclerBarChart绘制使用教程
![](https://img.aspxhome.com/file/2023/1/83521_0s.png)
JVM中有哪些内存区域及其作用
![](https://img.aspxhome.com/file/2023/4/79314_0s.png)
C#实现3步手动建DataGridView的方法
JAVA调用SAP WEBSERVICE服务实现流程图解
![](https://img.aspxhome.com/file/2023/2/58992_0s.png)
Netty分布式高性能工具类FastThreadLocal和Recycler分析
![](https://img.aspxhome.com/file/2023/7/97957_0s.png)
C#Button窗体常用属性及事件详解
详解Springboot之整合JDBCTemplate配置多数据源
java实现文件下载的两种方式
spring-boot-maven-plugin:打包时排除provided依赖问题
![](https://img.aspxhome.com/file/2023/5/72545_0s.png)
spring mvc中直接注入的HttpServletRequst安全吗
![](https://img.aspxhome.com/file/2023/6/63506_0s.png)