git子模块实践

Git子模块(Submodule)详解:前端项目管理的高效实践 Git子模块允许你将一个Git仓库作为另一个Git仓库的子目录。它能让你保持父子项目的独立版本控制,同时建立明确的依赖关系。Git子模块为前端项目的模块化管理提供了灵活方案,特别适合以下场景: ✅ 需要严格控制依赖版本 ✅ 跨项目共享私有组件库 ✅ 维护多项目间的关联关系建议搭配可视化工具(如SourceTree、GitKraken)使用,可以更直观地管理子模块状态。扩展学习Git官方Submodule文档进阶技巧:使用Git Hook自动化子模块更新。 阅读详情

遇到的问题

  • 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
      

引用

【Dv3Admin】Git 子模块在 Dv3admin 插件项目统一管理实践 通过 Git 子模块机制,可以实现 Dv3admin 插件项目的模块化管理和集中式部署,既提升了代码组织性,又简化了多项目协同开发。如果你有多个插件需要统一维护和部署,强烈建议采用子模块配合部署脚本的方式。后续我也可以为你定制 CLI 工具,批量初始化、清理、更新子模块,让运维更自动、更高效。 阅读详情

相关推荐

GBase8a-GDCA认证考试-复习参考题

为提升产品服务水平定期举办GBase产品认证培训,培训更多GBase数据库专业人员,满足用户快速成长的业务需求,建设GBase产品生态。请注意甄别,根据所学知识综合判断,正确率97%(97分)。

weixin_41826637的博客 2374

git submodule add子模块的添加,--recurse-submodules递归克隆子项目

  git submodule add 可将其他仓库作为本仓库的子模块,并保持父项目和子项目相互独立。面对比较复杂的项目时,经常会用到。 语法 将URL的仓库作为本仓库的子模块。执行后,git会将URL的仓库clone到 当前路径 下。 git submodule add URL 后面可以 指定路径。 git submodule add URL <path> 【注意】路径需要包含子模块的文件夹名称,如不包含会报错 <path> already exists and i

Mark_md的博客 1万+

Skiplist,B,B+tree,LSM tree

SkipList 理解(如何实现): 即使是有序的链表,查找的时间复杂度也是O(n),但链表不能随机访问所以不适用于二分查找,使得查找的时间复杂度为O(logn)。 于是将有序链表和二分查找结合得到了SkipList,类似于二叉搜索树,这是一种以空间换时间的算法,通过在每个节点中增加向前的指针,从而提升查找效率(如下图所示)。 一开始如a所示,是一个有序的链表,时间复杂度O(n)。随后建立了e所示的SkipList,从最顶层往下查找,可以跳过许多元素,减少查找次数。 ​

weixin_45875458的博客 947

git submodule 高频使用方法

git submodule 高频使用方法

NickDeCodes的博客 1336

bugku渗透测试4-writeup

三、对这个主机进行全端口的扫描,发现存在22000 ssh端口,那么可以联想到时redis写入公钥来连接主机。又来了一个新的靶场,这个靶场打下来我觉得关键就是信息收集,走了很多的弯路。八、最后一个flag是要去看cms的数据库里面,这个数据库是sqlite。把这个数据库下载下来,登录密码是加密的,就直接用token。一、入口的漏洞是在登录的时候去抓包,修改action的值。六、没想到这个第一台机器的密码,在第二台里面。七、扫描第一台主机、使用之前的密码连接成功。获取最后一台主机的root密码。

vsdfbhsdhsdfh的博客 1298

深度强化学习算法PPO训练Pendulum

returnadv = 0print('状态空间维度:', state_n)print('动作空间维度:', action_n)steps = []if done:breakif done:breakelse:steps = []if done:break。

weixin_43336108的博客 808

工具之Git | submodule 常用命令

submodule 常用命令 git submodule: 显示所有 submodule, 等同于git submodule status 添加 submodule 到现有项目 Run git submodule add -b <branch> --name <name> <repo-url> <local dir> Commit both files on the superproject 从当前项目移除 submodule git submo

迈微AI研习社 · 号主 6343

图形学基础|基于SDF的卡通阴影图

图形学基础|基于SDF的卡通阴影图 文章目录图形学基础|基于SDF的卡通阴影图一、前言二、SDF(Signed Distance Field)三、阴影图生成3.1 SDF生成3.2 插值参考博文 一、前言 回顾之前做的卡通渲染,角色面部阴影是靠一张阴影贴图实现的。 为了更好地控制角色的脸部阴影,通过计算脸部朝向与光照方向的夹角和一张单色的FaceMap来判断。 FaceMap的每个像素表示:该像素判断为阴影时候需要达到的夹角。 例如: 当方向光正对角色的时候,夹角为0°,对应的值为0,此时,FaceMap

【黑键】 1万+

【Git】Git submodule常用指令

文章出自个人博客 https://knightyun.github.io/2021/03/21/git-submodule,总结的很详细,本文只做学习记录,方便自己查阅~

All_In_gzx_cc的博客 7810

wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作

wps js宏入门看这里,我写了常用的js操作Excel的方法:获取工作簿对象、获取工作表对象、获取单元格的值、链接转图片、生成条形码图片、单元格区域数据转二维数组方法、保存工作簿、弹出输入框、YesNo选择框,助你从VBA转战JS。

huaermeier的博客 3万+

VTK在QT与非QT环境下使用的区别

VTK可以在QT框架内使用,也可以独立于QT使用,这两种使用方式在架构、交互和渲染方面有显著差异。

深之JohnChen的专栏 629

git深入理解(六):git checkout详解

Switch branches or restore working tree files $ git checkout -h usage: git checkout [<options>] <branch> or: git checkout [<options>] [<branch>] -- <file>... -q, --quiet suppress progress reporting -b &l

猛犸象 12万+

微信小程序 - 最新详细实现气泡菜单功能,点击任意元素在底部或附近周围弹出气泡菜单列表,仿微信气泡弹框显示菜单快捷功能收纳,自定义气泡弹窗/菜单气泡弹窗,小程序气泡框嵌套菜单组件插件,自动计算弹出定位

微信小程序,vue2,vue3,气泡列表,汽泡菜单,气泡框,泡泡框,悬浮框,悬浮菜单,点击菜单按钮弹出气泡,对话箭头气泡框,弹出的气泡准确定位并吸附在附近,弹出式气泡,弹窗菜单,气泡自定义HTML弹窗,带三角的气泡弹框,三角气泡框里面嵌套菜单,当点击一个按钮或元素时,会从附近弹出一个小气泡一样的菜单列表,自定义气泡框内的内容,点击一个元素在附近弹出一个气泡弹框功能效果,气泡弹框不准怎么办,被盖住了,挡住了,长按弹出,组件插件,微信,自定义气泡菜单组件,气泡弹出框,小程序自定义气泡框,菜单气泡,包裹列表的三角

🏆 前端领域优质创作者 3917

用 Git 子模块管理外部拓展库的实践总结

本文总结了使用Git子模块管理外部拓展库的实践经验。针对项目开发中常见的外部库管理混乱、版本混杂、替换回退频繁等问题,提出采用Git子模块作为解决方案。文章详细介绍了从删除原有Git管理文件、添加忽略规则到绑定子模块的具体操作流程,重点比较了本地子模块与远程子模块的优缺点,推荐使用远程子模块实现版本可追踪和跨机器复现。该方法能有效解决多版本混杂、构建结果不一致等问题,为缺乏CI/CD流程的团队提供了一种简单可靠的外部库管理方案。

ag4526的博客 1130

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

关于git子模块实践(一)

git子模块

motosheep的博客 1447

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Git子模块使用指南与最佳实践

Git子模块是版本控制中管理项目依赖的重要机制,通过在父仓库中嵌入子仓库引用,实现多项目协同开发。其核心原理是通过.gitmodules文件记录子模块元数据,保持父子项目版本独立。在物联网开发、SDK集成等需要固定依赖版本的场景中特别有价值。本文以传感器驱动开发为例,详解git submodule add/update等核心命令,对比subtree方案差异,并分享递归初始化、批量操作等工程实践技巧。针对子模块状态冲突、版本漂移等常见问题,提供基于git submodule status和--recursiv

weixin_28839439的博客 310

PyPantograph项目中的Git子模块配置最佳实践

PyPantograph项目中的Git子模块配置最佳实践 在基于Python的交互式定理证明工具PyPantograph的开发和使用过程中,正确配置Git子模块是保证项目依赖管理顺利进行的关键环节。本文将从技术实现角度,详细介绍PyPantograph及其依赖项目Pantograph的Git子模块配置方案。 子模块分支配置规范 PyPantograph项目采用两级子模块结构: 主项目PyPant...

gitblog_07139的博客 493

Git子模块全解析:从基础概念到企业级实践

版本控制系统是现代软件开发的核心基础设施,其中Git作为分布式版本控制的代表,通过子模块(submodule)机制实现了多仓库的模块化管理。子模块本质上是一个指向特定提交的指针,保持依赖库的独立版本控制,这种设计在管理第三方依赖和组件化开发中具有独特优势。从技术实现看,子模块通过.gitmodules文件记录仓库URL和提交哈希,与主项目形成松耦合关系。在持续集成和微服务架构场景下,合理使用子模块能有效解决代码复用与独立开发的矛盾。本文以UI组件库为例,详解子模块的添加、更新、修改全流程操作,并对比分析gi

weixin_28829325的博客 240

EspSoftwareSerial库升级与维护:Git子模块管理最佳实践终极指南

在ESP8266和ESP32物联网开发中,**EspSoftwareSerial库**是实现软件串口通信的核心工具。这个强大的库为Arduino开发者提供了灵活的串口解决方案,特别是在硬件串口资源有限的场景下。然而,作为一个Git子模块集成到ESP8266 Arduino BSP中的项目,**EspSoftwareSerial的升级与维护**需要掌握专业的Git子模块管理技巧。 ## 📦 为什

gitblog_00823的博客 382

Git子模块功能使用实践

背景 整个事情源于某天心血来潮又写了篇博客,当准备使用hexo发表时,突然想到一个问题之前虽然做到对于博客项目的git备份了,但是最近新换的主题配置修改也备份了吗?,有点像强迫症出门后思考房门有没有锁好的感觉。 背景是这样的:最初我刚接触hexo的时候,觉得发现了宝贝,它是个不错的静态博客生成器,风格偏极客风,虽说是博客工具,但要拿给不会技术的人可能用起来还比较蹩脚,因为其虽然声称使用简便,只需要...

weixin_33984032的博客 440

GIT上手实践笔记之3 使用子模块

上个笔记记录了如何上传文件和文件夹。这里我们试验一下如何使用子模块。我们使用别人的代码可以将别人的整个GITHUB上的某一个项目做为一个自己的代码一部分,GIT里面称作子模块submodule。这篇就简单试验一下调用子模块并指定是使用的历史版本。 git clone https://github.com/hexsdr/gittest2 cd gittest2/ git submodule add https://github.com/hexsdr/gittest cd gittest/ git log

mcupro的专栏 817

Git子模块使用指南:原理、操作与最佳实践

版本控制系统是现代软件开发的核心工具,其中Git作为分布式版本控制系统,通过分支管理和代码历史追踪极大提升了团队协作效率。Git子模块(submodule)是一种特殊的Git功能,允许将一个Git仓库作为另一个Git仓库的子目录,同时保持各自的独立版本历史。这种机制特别适用于需要将多个独立项目组合在一起的大型工程场景,比如前端组件库与主项目的集成,或是插件系统与核心应用的协同开发。通过子模块,开发者可以精确控制依赖版本,避免代码复制带来的维护难题,同时保持各项目的独立演进能力。在实际工程中,子模块常与CI/

weixin_28836507的博客 316

Git 和 Maven 的子模块简单实践

当一个产品或者项目由大量独立模块组成时,想要从 Git 挨个下载下来导入 IDE 查看并不容易,此时可以结合使用 Git 和 Maven 的子模块来处理这种场景。 通过 Git 子模块可以自动批量下载所有关联的项目,通过 Maven 子模块可以批量导入到 IDE 中,结合这两者可以很容易的管理和查看项目。 创建子模块项目 打开 Git Bash,创建一个空目录并进入: $ mkdir erp-su...

偶尔记一下 - mybatis.io 4598

.NET虚拟单体仓库实践:Git子模块与依赖管理优化

在大型软件开发中,依赖管理和代码仓库组织是提升工程效率的核心问题。通过虚拟单体仓库(Virtual Monorepo)架构,可以实现跨项目的统一版本控制和原子提交。本文以.NET技术栈为例,详细解析如何利用Git子模块构建分层依赖体系,结合Directory.Build.props实现SDK版本统一,通过NuGet.Config集中管理包源。实践表明,该方案能显著降低构建失败率(从32%降至5%),提升并行构建效率3倍,并使代码评审周期缩短53%。特别适用于包含数百个C#项目、混合MSBuild/.NET

weixin_33404102的博客 203

【GIT版本控制】--子模块

创建和管理Git子模块的总结:Git子模块允许在一个仓库中引用另一个仓库,通过添加、初始化和更新子模块,你可以将外部代码集成到你的项目中。确保文档、稳定链接、及时更新以及谨慎提交子模块更改等最佳实践,有助于高效管理和维护子模块,同时减少潜在问题。Git子模块是管理依赖关系和协作的强大工具,但需要小心使用。

喵叔 1537
上一篇: 分享一个Vue前端代码质量检查方案
下一篇: nodejs生成项目目录树
一号小白
博客等级 码龄9年 13粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值