• 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
    在这里插入图片描述
    点进这个版本,我们可以看到对应的提交记录是我们最新提交的一次记录
    在这里插入图片描述
    如果不提交指针文件的话,其他人在拉取项目的时候就拉取不到我们提交的子模块的最新代码。

  • 相关阅读:
    巧用shell脚本批量替换字符串
    化工原理 --- 热量传递(补充)
    Linux之shell脚本编程
    VsCode备忘
    Linux系列之比较命令
    coreldraw2024精简版绿色版安装包免费下载
    洛谷千题详解 | P1019 [NOIP2000 提高组] 单词接龙【C++、Java语言】
    Android 10 应用层如何操作设备节点/sys/devices
    解锁工业 4.0 元宇宙:AR/VR、AI 和 3D 技术如何为下一次工业革命提供动力
    学习与尝试 --> 事件风暴
  • 原文地址:https://blog.csdn.net/qq_40096897/article/details/128033071