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

Android Git submodule详解用法示例

.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添加成功

Android 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时候是这样的

Android Git submodule详解用法示例

可以选择只提交一部分,也可以都选择提交,提交到他们各自的仓库,再看 push 的样子

Android Git submodule详解用法示例

与commit情况类似,可选择的push到远程库

submodule独立项目上的代码提交

与一般的代码提交一样,操作都一样。主项目中的submodule模块push后Water项目该有的全有,Water项目push后主项目也会有

Android Git submodule详解用法示例

删除 submodule


//  修改 .git/config ,删除 Water 文件下所有的代码
git submodule deinit Water

执行git submodule deinit Water之前

Android Git submodule详解用法示例

执行git submodule deinit Water之后,submodule“Water”被移除

Android Git submodule详解用法示例


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

Android Git submodule详解用法示例

submodule 被移除

来源:https://blog.csdn.net/xihuailu3244/article/details/119028565

标签:Android,Git,submodule
0
投稿

猜你喜欢

  • 探讨Object转为String的几种简易形式详解

    2023-08-21 11:47:27
  • mybatis-plus 查询传入参数Map,返回List<Map>方式

    2022-01-05 13:39:24
  • C#实现扫雷游戏

    2023-12-10 07:51:05
  • spring mvc4中相关注解的详细讲解教程

    2021-10-11 23:21:17
  • Spring Boot如何优化内嵌的Tomcat示例详解

    2023-11-13 17:52:53
  • java实现List中对象排序的方法

    2023-11-08 21:36:29
  • C#使用iTextSharp添加PDF水印

    2021-10-09 08:59:27
  • Android RecyclerBarChart绘制使用教程

    2023-06-19 12:18:36
  • JVM中有哪些内存区域及其作用

    2023-07-13 05:28:33
  • C#实现3步手动建DataGridView的方法

    2021-10-13 22:35:56
  • JAVA调用SAP WEBSERVICE服务实现流程图解

    2023-11-07 03:54:57
  • Netty分布式高性能工具类FastThreadLocal和Recycler分析

    2023-03-20 09:13:09
  • C#Button窗体常用属性及事件详解

    2021-08-29 03:43:28
  • 详解Springboot之整合JDBCTemplate配置多数据源

    2023-05-03 13:40:43
  • java实现文件下载的两种方式

    2023-11-11 06:37:14
  • spring-boot-maven-plugin:打包时排除provided依赖问题

    2023-07-18 02:12:11
  • spring mvc中直接注入的HttpServletRequst安全吗

    2021-12-29 07:48:16
  • SpringBoot Jpa分页查询配置方式解析

    2023-03-02 10:04:02
  • SpringBoot整合ES解析搜索返回字段问题

    2023-01-26 21:39:53
  • Java接口幂等性设计原理解析

    2022-12-22 12:27:01
  • asp之家 软件编程 m.aspxhome.com