git submodule的使用:将别人的git仓库作为自己的子仓库
- git的基本操作在该篇中展示:git的基本操作
- 在日常开发中,我们经常会碰到需要将别人的仓库作为自己的子仓库来进行开发。下面将介绍具体将如何操作。
1、添加Submodule至自己的git仓库
1.1、创建自己的Git仓库
(1)在github中创建自己的仓库。
(2)在终端将该仓库clone下来,并cd至该目录。
git clone xxx
cd xxx
1.2、添加子模块
(1)使用 git submodule add 命令添加子模块。
git submodule add <子模块 URL> <子模块目录># eg:将abc的子模块添加至我们的项目中
git submodule add htps://github.com/xxx/abc.git abc
1.3、提交并上传变更
输入以下指令提交并上传:
git commit -m "添加子模块 abc"
git push
2、Submodule的使用规则
2.1、子模块的版本控制
管理子模块的规则和主模块相同。
- 克隆子模块
--init 选项:如果子模块尚未初始化,则将其初始化。
--recursive 选项:递归更新所有子模块,包括嵌套子模块。
每次使用时输入:
git submodule update --init --recursive# 作用:
# 1、初始化所有未初始化的子模块。
# 2、更新所有子模块到最新提交。
# 3、递归更新所有嵌套子模块。
- 更新子模块
git submodule update --recursive
- 提交子模块变更
cd lib
git add .
git commit -m "更新子模块 lib"
cd ..
git submodule add lib
git commit -m "更新子模块版本"
2.2、子模块的分支管理
子模块可以独立进行分支管理。
- 切换子模块分支:
git submodule checkout <分支名称>
- 创建子模块分支:
git submodule branch <分支名称>
- 合并子模块分支:
git submodule merge <分支名称>
3、更新Submodule
3.1、更新所有的子模块
git submodule update --recursive
3.2、更新指定子模块
git submodule update <子模块目录># eg:更新abc子模块
# git submodule update abc
3.3、单独更新子模块
使用 git fetch 和 git reset 单独更新子模块。
git fetch <子模块 URL>
git reset --hard <子模块版本>
例如,将 abc 子模块更新至 v1.0.0 版本:
git fetch https://github.com/user/abc.git
git reset --hard v1.0.0
4、合并Submodule
4.1、合并子模块变更
git submodule update --init --recursive
git add .
git commit -m "合并子模块变更"
4.2、解决冲突
如果遇到冲突,需要手动解决。
git submodule status
git submodule foreach git mergetool
git add .
git commit -m "解决子模块冲突"
5、子模块指针用法
我们可以使用子模块指针来指定子模块的特定版本。
git submodule add --depth 1 https://github.com/user/lib.git lib
git submodule update --init --recursive
6、子模块克隆
我们也可以单独克隆子模块至单独目录中。
git submodule clone https://github.com/user/lib.git lib
7、删除子模块
git submodule deinit abc
git rm -rf abc
相关文章:
git submodule的使用:将别人的git仓库作为自己的子仓库
git的基本操作在该篇中展示:git的基本操作在日常开发中,我们经常会碰到需要将别人的仓库作为自己的子仓库来进行开发。下面将介绍具体将如何操作。 1、添加Submodule至自己的git仓库 1.1、创建自己的Git仓库 (1)在github中创建自…...
Springboot 下载附件
GetMapping("/download") public void download(RequestParam String fileId, HttpServletResponse response) throws IOException {// 查询文件信息SysFileEntity sysFileEntity fileService.queryFileById(fileId);response.setContentType("application/oct…...
MySQL 延迟复制:确保数据安全与系统稳定的秘诀
MySQL 延迟复制:确保数据安全与系统稳定的秘诀 在 MySQL 主从复制架构中,数据的同步通常是实时的。然而,在一些特定场景下,我们可能不希望从库立刻同步主库的所有更新。特别是在高风险操作或者主库出现故障时,实时复制…...
ELK 使用教程采集系统日志 Elasticsearch、Logstash、Kibana
前言 你知道对于一个系统的上线考察,必备的几样东西是什么吗?其实这也是面试中考察求职者,是否真的做过系统开发和上线的必备问题。包括:服务治理(熔断/限流) (opens new window)、监控 (opens new window)和日志,如果…...
python实现自动登录12306抢票 -- selenium
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 python实现自动登录12306抢票 -- selenium 前言其实网上也出现了很多12306的代码,但是都不是最新的,我也是从网上找别人的帖子,看B站视频&…...
使用Diffusion Models进行图像超分辩重建
Diffusion Models专栏文章汇总:入门与实战 前言:图像超分辨率重建是一个经典CV任务,其实LR(低分辨率)和 HR(高分辨率)图像仅在高频细节上存在差异。通过添加适当的噪声,LR 图像将变得与其 HR 对应图像无法区分。这篇博客介绍一种方式巧妙利用这个规律使用Diffusion Mod…...
吾杯网络安全技能大赛——Misc方向WP
吾杯网络安全技能大赛——Misc方向WP Sign 题目介绍: 浅浅签个到吧 解题过程: 57754375707B64663335376434372D333163622D343261382D616130632D3634333036333464646634617D 直接使用赛博橱子秒了 flag为 WuCup{df357d47-31cb-42a8-aa0c-6430634ddf4a} 原神启动…...
Web安全 - “Referrer Policy“ Security 头值不安全
文章目录 概述原因分析风险说明Referrer-Policy 头配置选项1. 不安全的策略no-referrer-when-downgradeunsafe-url 2. 安全的策略no-referreroriginorigin-when-cross-originsame-originstrict-originstrict-origin-when-cross-origin 推荐配置Nginx 配置示例 在 Nginx 中配置 …...
C#OPC(上)
OPC(OLE for Process Control),用于过程控制的OLE,是一个工业标准,管理这个标准的国际组织是OPC基金会,OPC基金会现有会员以超过220家。遍布全球,包括世界上所有主要的自动化控制系统、仪器仪表及过程控制系统的公司。基于微软的O…...
Imgui + Cmake + OpenGL + GLFW 隐藏控制台窗口
网上一般是VS,如何在属性里面把控制台改为窗口 本文,使用Clion Cmake,实现如何隐藏控制台窗口 环境:OpenGL3 GLFW 添加头文件#include <windows.h>把main函数入口改为int WinMain(HINSTANCE hInstance, HINSTANCE hPrevI…...
Spring Boot(七):Swagger 接口文档
1. Swagger 简介 1.1 Swagger 是什么? Swagger 是一款 RESTful 风格的接口文档在线自动生成 功能测试功能软件。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。目标是使客户端和文件系统作为服务器以同样的…...
RabbitMQ - 4 ( 22000 字 RabbitMQ 入门级教程 )
一: RabbitMQ 高级特性 前面主要讲解了 RabbitMQ 的概念和应用。RabbitMQ 实现了 AMQP 0-9-1 规范,并在此基础上进行了多项扩展。在 RabbitMQ 官方网站中详细介绍了其特性,我们将其中一些重要且常用的特性挑选出来进行讲解。 1.1 消息确认 …...
印象笔记07——试一试PDF标注
印象笔记07——试一试PDF标注 [!CAUTION] 根据第六期,我再次查询了资料,印象笔记还是有一些可圈可点的功能的(当然部分有平替),针对会员作用,开发使用场景虽然是逆向的,但我坚信这是一部分人的现…...
Vue3实战教程》24:Vue3自定义指令
如果您有疑问,请观看视频教程《Vue3实战教程》 自定义指令 介绍 除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外,Vue 还允许你注册自定义的指令 (Custom Directives)。 我们已经介绍了两种在 Vue 中重用代码的方式:组件和组…...
【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智能、大数据、机器学习、软件工程、网络安全方向
【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智能、大数据、机器学习、软件工程、网络安全方向 【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智能、大数据、机器学习、软件工程、网络安全方向 文章目…...
【ArcGIS Pro/GeoScene Pro】可视化时态数据
可视化过去二十年新西兰国际旅游业的发展变化 工程数据下载 ArcGIS Pro 快速入门指南—ArcGIS Pro | 文档 添加数据 数据为中国旅客数据 转置表字段 列数据转行数据...
Linux buildroot和ubuntu的异同点
Buildroot 和 Ubuntu 都是 Linux 系统的操作环境,但它们的设计理念和使用场景有很大的不同。 一、定义与目标 Buildroot Buildroot 是一个用于生成嵌入式 Linux 系统的工具集,专注于交叉编译和构建嵌入式设备的最小 Linux 环境。它的目标是为嵌入式系统提供定制化和优化的…...
k8s系列--通过docker拉取的镜像导入到 containerd中
要将通过 docker pull 拉取的镜像导入到 containerd 中,可以按照以下步骤操作: 步骤 1:使用 docker 将镜像保存为 tar 文件 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.11.1 docker save registry.cn-ha…...
Spring Boot(快速上手)
Spring Boot 零、环境配置 1. 创建项目 2. 热部署 添加依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency&…...
note 41:账务系统开发规范
目录 系统设计 防重控制 流量控制 并发控制 异常处理 备份机制 系统开发 前端队列操作 外系统交互 系统设计 防重控制 对于进入到系统中的数据(文件导入、手工录入、系统直连等)以及本系统发往外…...
FanControl完全攻略:智能风扇控制的动态平衡技术与多场景应用
FanControl完全攻略:智能风扇控制的动态平衡技术与多场景应用 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tren…...
森利威尔SL3041B替换LM5018 100V降压3.3V5V12V恒压芯片
在工业、汽车及电池供电的电子系统中,高压降压转换器的选择往往需要在性能、可靠性与成本之间取得平衡。传统上,LM5018等进口芯片凭借其高输入电压范围和稳定的性能占据一定市场,但随着国内半导体技术的成熟,国产替代方案已具备与…...
避坑指南:微信小程序Painter 2.0海报插件常见问题与优化技巧
避坑指南:微信小程序Painter 2.0海报插件深度优化实战 最近在帮客户重构小程序海报生成功能时,我重新审视了Painter 2.0这个老牌插件。不得不说,经过多次迭代后,它的功能确实强大到令人惊喜——支持从基础文本绘制到复杂阴影效果&…...
利用NSGA-III算法优化随机森林模型超参数的实践与可视化展示:从理论到实现的全过程解析
利用NSGA-III算法优化机器学习模型 通过Optuna库实现机器学习模型超参数的优化与可视化,通过精心设计的目标函数,将搜索多个超参数空间,最终确定使模型性能最优的参数组合 为了更直观地展示调参过程,最后利用3D曲面图对调参效果进…...
颠覆式项目管理工具GanttProject:让团队协作效率提升300%的开源解决方案
颠覆式项目管理工具GanttProject:让团队协作效率提升300%的开源解决方案 【免费下载链接】ganttproject Official GanttProject repository 项目地址: https://gitcode.com/gh_mirrors/ga/ganttproject GanttProject是一款完全免费的开源甘特图工具ÿ…...
别再让MATLAB并行池浪费你的内存!保姆级教程教你手动精准管理Parallel Pool
MATLAB并行池内存优化实战:从自动管理到精准控制 在科学计算和工程仿真领域,MATLAB的Parallel Computing Toolbox无疑是提升运算效率的利器。但许多资深用户都曾经历过这样的困扰:完成大规模并行计算后,发现系统内存依然被并行池占…...
Cockpit CMS终极扩展开发指南:7步创建自定义字段类型与组件
Cockpit CMS终极扩展开发指南:7步创建自定义字段类型与组件 【免费下载链接】cockpit Add content management functionality to any site - plug & play / headless / api-first CMS 项目地址: https://gitcode.com/gh_mirrors/coc/cockpit Cockpit CMS…...
GD32外部晶振配置不当引发串口乱码的时钟树深度解析与修复
1. 时钟树:微控制器的心跳发生器 第一次用GD32调串口的朋友,八成遇到过这样的场景:代码明明和官方例程一模一样,烧录后串口助手却疯狂输出乱码。这种时候千万别急着怀疑人生,问题的根源往往藏在那个不起眼的外部晶振配…...
ESP32-S3摄像头实战:按键触发拍照与SD卡自动存储方案
1. ESP32-S3摄像头项目核心价值与应用场景 当你手头有一块ESP32-S3开发板和摄像头模块时,最直接的冲动可能就是做个能拍照的小设备。但要把这个想法落地,需要解决三个关键问题:如何稳定触发拍摄?拍完的照片存哪里?怎么…...
【微信小程序更新机制全解析】原理、实践与最佳实践
前言 微信小程序的更新机制,是连接开发者版本迭代与用户体验的核心桥梁。它设计的核心逻辑是**“自动无感更新为主,手动强制更新为辅”,在保证小程序快速启动、稳定可用**的前提下,尽可能让用户使用最新版本;同时为开…...
