尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Github子模块(submodule)使用介绍
目录一.子模块使用场景二.子模块(submodule)概念的引入三.添加子模块四.查看子模块五.更新子模块■更新项目内子模块到最新版本■更新子模块为远程项目的最新版本六.克隆包含子模块的项目方法一先克隆父项目再更新子模块■克隆父项目■查看子模块■初始化子模块■更新子模块方法二递归克隆整个项目七.删除子模块■删除子模块文件夹■删除.gitmodules文件夹中相关子模块信息■删除.git/config文件夹中的相关子模块信息■删除.git文件夹中的相关子模块文件一.子模块使用场景当你在一个Git 项目上工作时你需要在其中使用另外一个Git 项目它是一个第三方开发的Git 库或者是你独立开发但是在多个父项目中使用的。这个情况下一个常见的问题产生了你想将两个项目单独处理但是又需要在其中一个中使用另外一个。二.子模块(submodule)概念的引入在Git 中你可以用子模块submodule来管理这些项目submodule允许你将一个Git 仓库当作另外一个Git 仓库的子目录。这允许你克隆另外一个仓库到你的项目中并且保持你的提交相对独立。三.添加子模块此文中统一将远程项目https://github.com/cain/cain-test.git克隆到本地test文件夹。git命令git submodule add 子项目url 子项目存放到本地的文件夹名$ git submodule add https://github.com/cain/cain-test.git test以上命令将远程项目https://github.com/cain/cain-test.git克隆到本地test文件夹下。添加子模块后运行git status, 可以看到目录有增加1个自动生成的文件.gitmodules, 这个文件用来保存子模块的信息。$ git status On branch master Initial commit Changes to be committed: (use git rm --cached file... to unstage) new file: .gitmodules new file: test四.查看子模块$ git submodule e23e823d3f51f5ebd731a68da05ad0371c3a0231 test (heads/master)五.更新子模块■更新项目内子模块到最新版本$ git submodule update■更新子模块为远程项目的最新版本$ git submodule update --remote六.克隆包含子模块的项目克隆包含子模块的项目有二种方法一种是先克隆父项目再更新子模块另一种是直接递归克隆整个项目。方法一先克隆父项目再更新子模块■克隆父项目$ git clone https://github.com/cain/cain-assets.git test■查看子模块$ git submodule --e23e823d3f51f5ebd731a68da05ad0371c3a0231 test子模块前面有一个--说明子模块文件还未检入空文件夹。■初始化子模块$ git submodule init Submodule test (https://github.com/cain/cain-test.git) registered for path test■更新子模块$ git submodule update Cloning into test... remote: Counting objects: 151, done. remote: Compressing objects: 100% (80/80), done. remote: Total 151 (delta 18), reused 0 (delta 0), pack-reused 70 Receiving objects: 100% (151/151), 1.34 MiB | 569.00 KiB/s, done. Resolving deltas: 100% (36/36), done. Checking connectivity... done. Submodule path test: checked out e23e823d3f51f5ebd731a68da05ad0371c3a0231在更新的过程中可能要求输入git的用户名和密码。方法二递归克隆整个项目$ git clone https://github.com/cain/cain-test.git test --recursive递归克隆整个项目子模块随父模块同时更新比方法一简洁。七.删除子模块删除子模块比较麻烦需要手动删除相关的文件否则在添加子模块时有可能出现错误。这里要提醒一句网上流传的rm -rf手工清理法删.gitmodules、删.git/config、删.git/modules是野路子容易残留配置导致下次添加报错。■如果子模块里有本地修改、确认要丢弃deinit加-f强制移除# 1. 反初始化从 .git/config 中移除子模块配置 $ git submodule deinit test # 2. 从暂存区和工作区移除子模块目录同时删除 .gitmodules 中的条目 $ git rm test # 3. 提交 $ git commit -m remove submodule test■如果子模块里有本地修改、确认要丢弃deinit加-f强制移除$ git submodule deinit -f test命令速查表命令说明git submodule add url path添加子模块git submodule查看子模块列表git submodule status查看各子模块状态当前提交git submodule init初始化子模块配置git submodule update拉取子模块内容到父项目记录的版本git submodule update --remote更新子模块到远程最新git submodule sync子模块 URL 变更后同步配置git submodule foreach git pull origin master批量更新所有子模块git clone --recurse-submodules url克隆时连子模块一起拉git submodule deinit path卸载子模块官方删除法第一步git rm path移除子模块目录官方删除法第二步两个最常见的坑坑一clone 下来子模块文件夹是空的父仓库只记录子模块的提交 ID不含代码。解法git submodule init git submodule update或克隆时就加--recurse-submodules。坑二别人更新了子模块你拉下来没变化子模块指向的是某个确定提交不是分支最新。解法git submodule update --remote或进子模块目录自己git pull。submodule 这东西用得少一年碰两三次每次都得翻一遍文档。所以把它写下来放这儿下次要用直接抄命令。本文同作者公众号「键盘缝里看人生」——一个还在写代码的中年人那边写技术踩坑也写点生活。
RELATED

相关推荐

GIT Manual

GIT Manual

Git && Github 應用示例客戶端切換不同用戶使用说明從git全新pull一個新項目修改eclipse 的 tokengithub 生产token事先pull,push后synch创建Project本地初始化查看当前文件夹下的文件管理状态把所有的文件添加到本地仓库管理界面更改Branch把本地文件push到…

📅 2026/10/14 1:44:57
react源码学习笔记

react源码学习笔记

1、virtual domReactNode分为以下几类React$Element:其属性有export type ReactElement {$$typeof: any,type: any,key: any,ref: any,props: any,// __DEV__ or for string refs_owner: any,// __DEV___store: {validated: 0 | 1 | 2, ...}, // 0: not validated,…

📅 2026/10/14 1:44:56
Cartographer实战指南:环境配置、TF坐标系与建图参数调优

Cartographer实战指南:环境配置、TF坐标系与建图参数调优

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/14 1:39:56
MORE NEWS

更多资讯

📰

如何在windows11禁止ollama开机启动

如何在windows11禁止ollama开机启动 在 Windows 11 上禁止 Ollama 开机自动启动,操作起来并不复杂。由于 Ollama 安装后默认会设置开机自启,但并没有提供直接的图形化开关,因此我们需要通过系统自带的功能来管理它。 删除启动文件夹快捷方式 …

📰

Kali Linux入门必看:3天速成网络安全基础,小白也能轻松上手!收藏起来学!

Kali Linux入门必看:3天速成网络安全基础,小白也能轻松上手!收藏起来学! 本文针对网络安全初学者在Kali Linux上遇到的常见问题,如安装、命令理解、工具使用等,提供了实用的入门指南。文章强调初学者无需一…

📰

SQL注入实战:低权限服务账户下如何以内网跳板实现C2上线(收藏必备)

SQL注入实战:低权限服务账户下如何以内网跳板实现C2上线(收藏必备) 本文通过实战案例,展示了在MSSQL注入中,当xp_cmdshell仅以低权限服务账户执行时,如何利用注入点作为内网跳板。通过堆叠查询&#xff0c…

📰

2026年AI安全上市公司梳理:产品、认证与商业化进展

随着大模型和智能体逐步进入企业业务流程,网络安全企业面临两类新需求:一是防范提示词注入、敏感数据泄露、模型输出风险等AI应用安全问题;二是利用AI提升威胁分析、告警研判和安全运营效率。因此,分析网络安全AI概念股&#xff0…

📰

PLC数据处理指令详解:从传送比较到移位转换的实战应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

DeepSeek私有化部署全攻略:SpringBoot集成与语音图片交互实战

最近一直在折腾大模型私有化部署这件事,从年初开始陆续把几个开源模型搬到内网试过,踩了不少坑,也总结出一套比较顺手的链路。这篇就完整聊聊“私有化部署DeepSeek SpringBoot集成 带语音和图片的UI交互”整条路线,给正准备把大…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬