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

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-front
	url = 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.kler.cn/a/541061.html

相关文章:

  • mysql8 C++源码中创建表函数,表字段最大数量限制,表行最大存储限制
  • 前端开发中,如何判断一个元素是否在可视区域中?
  • stm32小白成长为高手的学习步骤和方法
  • Axure原型图怎么通过链接共享
  • 日志2025.2.9
  • vscode中使用code-runner插件运行c程序语法报错code: 1
  • 2.10学习记录
  • 测试用例作用
  • 【Kubernetes的SpringCloud最佳实践】Spring Cloud netflix 能否被K8s资源完全替代?
  • 从基础到进阶:一文掌握排序、查找、动态规划与图算法的全面实现(C++代码实例解析)
  • 高阶C语言|枚举与联合
  • 详解Redis中lua脚本和事务
  • 网络安全组织架构表 网络安全技术架构
  • vue3+websocket+springboot、websocket消息通讯
  • 2025.2.8——二、Confusion1 SSTI模板注入|Jinja2模板
  • DWORD 和 QWORD
  • yum报错 Could not resolve host: mirrorlist.centos.org
  • HarmonyOS开发 - 记事本实例一(界面搭建)
  • 如何利用 AWS 预测分析功能做精准财务规划?
  • C++ STL Map 学习学案(提高版)
  • java-LinkedList源码详解
  • 本地部署DeepSeek-R1(Mac版)
  • keil5自学笔记1(基础设置)
  • RapidrepairDaoImpl
  • 利用ES6 Set去重
  • 标题:深入探索 gRPC:后端开发中高效通信的利器