• Git -- submoudule子模块使用


    子模块的作用

            通常情况下,我们做项目时会有几个业务功能区分比较明确的模块,比如简单来说,一个项目我们可以分为认证授权模块、工具类模块、常规业务模块。
            而像认证授权模块、工具类模块这些公用模块会有很多项目去使用,所以这些模块不能放在某一个项目里面,而应该是一个单独的仓库,这个时候就可以使用 git submoudule 去引用和管理公用模块。
            引用子模块的定义就是,git 子模块允许你将一个 git 仓库作为另一个 git 仓库的子目录。能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。子模块适用于主项目对子模块有依赖关系,却又并不关心子模块的内部开发的流程和细节;适用于整体复用的情况;

    添加子模块

    首先拉取主项目到本地

    git clone -b origin/master http://xxx.xx.xx.xxx/cnaec/server.git
    cd server
    git pull
    
    • 1
    • 2
    • 3

    然后添加子模块,并推送到远程仓库
    这里我添加了两个模块

    git submodule add http://xxx.xx.xx.xxx/base-moudule/auth-moudule2.git
    git submodule add http://xxx.xx.xx.xxx/base-moudule/utils-moudule.git
    git add.
    git commit -m "add submodules"
    git push
    
    • 1
    • 2
    • 3
    • 4
    • 5

    添加完之后,项目里面会生成一个 .gitmodules 文件,里面是子模块的地址配置,有这个就表示子模块添加成功了。
    在这里插入图片描述
    更新子模块代码
    刚添加完的子模块是一个空文件夹,里面没有内容,我们需要更新一下子模块项目

    git submodule init
    git submodule update
    
    • 1
    • 2

    拉取带子模块的项目

    第一种方法:

    git clone http://xxx.xx.xx.xxx/cnaec/server.git --recurse-submodules
    
    • 1

    第二种方法:

    git clone http://xxx.xx.xx.xxx/cnaec/server.git
    cd server
    git submodule init
    git submodule update
    
    • 1
    • 2
    • 3
    • 4

    修改子模块代码

    当我们拉取了主项目和子模块并修改子模块内容,提交子模块的时候主项目会生成一个新的指针字符串,指向当前子模块的提交记录。
    切记,子模块做了修改之后,这个文件提交的时候一定不要漏了。每一个子模块都有一个对应的这样的文件
    在这里插入图片描述
    我们看一下现在的仓库信息 auth-moudule 显示版本是 65638680
    在这里插入图片描述
    点进这个版本,我们可以看到对应的提交记录是我们最新提交的一次记录
    在这里插入图片描述
    如果不提交指针文件的话,其他人在拉取项目的时候就拉取不到我们提交的子模块的最新代码。

  • 相关阅读:
    EAV模型(实体-属性-值)的设计和低代码的处理方案(2)--数据的查询处理
    gin框架教程笔记
    java计算机毕业设计课题申报系统MyBatis+系统+LW文档+源码+调试部署
    关于需求规范和需求评审的一点看法
    通过java实体类逆向生成sql
    阿赵的Unity可视化Shader工具ASE介绍目录
    人大金仓KingbaseES_V008R006C008B0014安装
    【hack】浅浅说说自己构造hack的一些逻辑~
    MFC上下文菜单与定时器学习笔记
    Fluent Meshing的workflow方法
  • 原文地址:https://blog.csdn.net/qq_40096897/article/details/128033071