当前位置: 首页 > news >正文

git submodule使用

git submodule 用于关联其他独立的仓库。

它有着几点好处:

  • 代码复用:可以将工具代码放到单独的仓库,再通过 submodule 关联。
  • 模块化开发:可以将项目拆分成多个模块,每个模块设置单独仓库独立开发,再通过 submodule 组合在一块。
  • 版本控制:submodule 可以指定依赖的外部仓库的版本。确保项目使用的版本是稳定的。

git 关联子模块

  1. 添加子模块
git submodule add <仓库URL> <关联路径>
# git submodule add http://xxx.git packages/srm-front

执行成功后可以在父模块的.gitsubmodules 文件看到引入的子模块

  1. 在本地初始化子模块仓库,拉取子模块对应的分支代码
git submodule update --init --recursive --remote

git 修改子模块的URL

当关联的子模块地址改变后,在初始化子模块时会因为找不到对应的仓库而报错。这时需要修改子模块的地址。或者直接将子仓库 clone 到对应的目录下,但这样不方便团队协作

  1. 编辑.gitmodules文件
    修改目标子模块的 URL 为新的 URL。
[submodule "packages/srm-front"]path = packages/srm-fronturl = http://xxxx.git
  1. 同步新的 URL 到 git 配置

运行以下命令将.gitmodules的更改同步到本地仓库配置:

git submodule sync
  1. 清理子模块的现有配置和工作目录:
git submodule deinit --force srm-front
  1. 重新初始化并更新子模块
    使用新的 URL 重新初始化和检出子模块:
git submodule update --init --remote srm-front
  1. 提交更改到主仓库
    将修改后的.gitmodules文件提交到版本控制:
git add .gitmodules
git commit -m "[refactor] 更新关联子模块地址"
git push
  1. 验证更改:
    检查子模块远程 URL
    进入子模块目录,确认远程URL是否已更新:
cd packages/srm-front
git remote -v # 应显示新的HTTP地址

注意事项:

  • 如果子模块包含未提交的更改,deinit会提示错误,可先提交或丢弃这些更改。
  • 若主仓库有多个子模块,使用git submodule sync --recursive同步所有嵌套子模块。
  • 后续克隆主仓库时,使用git clone --recurse-submodules会自动使用新的HTTP URL
  • 以上步骤确保子模块的 URL 在本地和后续克隆中均使用HTTP协议。

http://www.mrgr.cn/news/90130.html

相关文章:

  • JVM 类加载子系统在干什么?
  • vue3+websocket+springboot、websocket消息通讯
  • TcpClientTest
  • kubectl 命令详解
  • OpenSIPS-Dispatcher模块详解:优化SIP流量分发的利器
  • uniapp实现人脸识别(不使用三方插件)
  • 【RabbitMQ】RabbitMQ的下载安装及使用
  • 【Vue】在Vue3中使用Echarts的示例 两种方法
  • 律所录音证据归集工具:基于PyQt6与多线程的自动化音频管理解决方案
  • 【DeepSeek】DeepSeek概述 | 本地部署deepseek
  • c语言——网络编程【多路文件IO实现 poll、epoll模型总结】内附代码
  • 大语言模型RAG,transformer和mamba
  • 使用LLaMA Factory踩坑记录
  • SQL自学,mysql从入门到精通 --- 第 7 天,表的联合
  • 机器学习 - 线性回归(最大后验估计)
  • WEB小项目——鼠标划入丝滑显示下划线
  • Wpf美化按钮,输入框,下拉框,dataGrid
  • SpringBoot3 + Jedis5 + Redis集群 如何通过scan方法分页获取所有keys
  • zy.21
  • DeepSeek从入门到精通:全面掌握AI大模型的核心能力
  • GPU — 8 卡 GPU 服务器与 NVLink/NVSwitch 互联技术
  • 攻防世界32 very_easy_sql【SSRF/SQL时间盲注】
  • 【MQ】Spring3 中 RabbitMQ 的使用与常见场景
  • 【MQ】RabbitMQ 高可用延时功能的探究
  • 0 Rust与Qt集成实践指南(CXX-Qt)
  • 使用Redis实现业务信息缓存(缓存详解,缓存更新策略,缓存三大问题)