git子模块实践

本文探讨了在A、B两个项目中使用子模块管理共用静态资源的方法,避免了npm管理带来的复杂性和效率问题。通过git submodule命令,详细介绍了如何添加、更新、切换分支时处理子模块,以及如何设置配置项简化工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到的问题

  • A,B两个项目中有很多公用静态资源
  • 静态资源包括 js插件,基础组件,业务组件,图片,文档…
  • 使用npm管理 会使项目复杂化 ,新增组件调试流程复杂,静态资源上传到npm后下载安装包会很慢

准备工作

  1. 打开github

  2. 新建仓库 gittest3

  3. 新建仓库 gittest3child

在这里插入图片描述

添加子模块

  1. 拉取代码gittest3

  2. 执行git命令 git submodule add https://github.com/xbcc 123/gittest3child.git 结果如下图

    $ git submodule add https://github.com/xbcc 
    123/gittest3child.git
    
    Cloning into 'F:/desktop/gitTest3/gittest3/gittest3child'...
    remote: Enumerating objects: 3, done.       
    remote: Counting objects: 100% (3/3) eceivinremote: Counting objects: 100% (3/3), done. 
    % (3/3), done.
    
    remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    warning: LF will be replaced by CRLF in .gitmodules.
    The file will have its original line endings in your working directory
    

修改

  1. 提交gittest3项目会看到子模块与项目建立了关联

在这里插入图片描述

  1. 现在修改gittest3Child文件提交到git, 会看到gittest3项目多出一个diff文件

在这里插入图片描述

  1. 再次提交gittest3项目到git仓库,与子项目建立新的版本关联
    在这里插入图片描述

  2. 结论:当项目版本发生回退时,还是可以通过commit信息自动找回指定模块的文件

协作

  1. git clone 命令传递 --recurse-submodules 选项,它就会自动初始化并更新仓库中的每一个子模块, 包括可能存在的嵌套子模块。
# eg: 
git https://github.com/xbcc123/gittest3.g
it -recurse-submodules
  1. 如果你已经克隆了项目但忘记了 --recurse-submodules 可以使用git submodule update --init --recursive 来手动更新项目中的子模块

切换分支

  1. 如果你创建一个新分支,在其中添加一个子模块,之后切换到没有该子模块的分支上时,你仍然会有一个还未跟踪的子模块目录; 如果你移除它然后切换回有那个子模块的分支,需要运行 git submodule update --init 来重新建立和填充

  2. 正确的操作方式

    • 使用–recurse-submodules让子模块处于正确的状态

      git checkout --recurse-submodules master
      
    • 推荐: 设置config submodule.recurse全局将所有带有submodule.recurse的命令默认带上–recurse-submodules

      git config submodule.recurse true
      

引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值