git submodule的在项目依赖中的使用

在依赖库的管理上,每种编程语言都会有自己独特的包管理机制,例如golang的mod管理。

其实还有一种更通用的,与语言无关的管理方式------git submodule 子模块管理。

这里假设项目D ,为其它多项目 项目A项目B 等所依赖,则可以使用git submodule来实现项目A项目B项目D的依赖管理,实现如下关系图:

创建子模块依赖

为项目创建子模块,只需一条简单指令。例如,为项目A增加项目D子模块:

xml 复制代码
git submodule add <项目D git 仓库地址> <项目A映射子目录>

设置子模块依赖版本

子模块作为一个独立项目,其版本管理也是独立的。项目A最终依赖于项目D的某一个版本,要实现版本绑定,可以按如下步骤操作:

xml 复制代码
cd <项目A映射子目录>
git checkout <commit hash 1>
cd <项目A目录>
git add <项目A映射子目录>
git commit <...>

经过如上的绑定,项目A 就绑定了 项目Dcommit hash 1这个版本。

删除子模块依赖

有时候,项目变化,可能需要解除子模块的绑定,例如要删除 项目A 对项目D的子模块依赖,可以按照如下步骤操作:

bash 复制代码
git rm --cached <项目A映射子模块>
rm -rf <项目A映射子模块>
vi .gitmodules # 删除.gitmodules中关于项目D的子模块描述项
vim .git/config # 删除.git/config中关于项目D的子模块描述项
rm -rf .git/module/<项目A映射子模块>

如此即可以彻底删除 项目A中的项目D相关的子模块依赖信息。

总结

git submodule实现项目依赖如此简单,以至于小编在项目中,忍不住大量使用,特别是私库的依赖管理。

希望大家也能尝试,亲身体会它简单的设计思路和丝滑用法。

相关推荐
程序员cxuan12 小时前
Grok Build 被众人唾骂,结果老马把它开源了
人工智能·后端·程序员
爱勇宝15 小时前
《道德经》第 7 章:真正厉害的领导者,不抢主角
前端·后端·程序员
Hilaku17 小时前
2026 年前端大洗牌:React 服务端到 Vite 的底层重构
前端·javascript·程序员
程序员cxuan17 小时前
离谱,GPT-5.6 竟然在后台执行了 rm -rf
人工智能·后端·程序员
林小卫很行19 小时前
WorkBuddy 入门:为什么推荐腾讯出的这个 AI 助手
人工智能·程序员
zzzzzz31019 小时前
当用户说「帮我用AI写个淘宝」时,我在想什么——一个独立开发者的 AI 时代奇葩需求大赏
人工智能·程序员·产品经理
SeaTunnel1 天前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
Hilaku2 天前
为什么 Cloudflare 能做到毫秒级冷启动,而其它云厂商却不行?
前端·javascript·程序员
用户2943918203532 天前
Leno vs Python 性能对决:3-5 倍差距从何而来?
程序员
用户852495071842 天前
手把手教你理解 React:从端侧 AI 到组件化思维
程序员