😄
前端学习
  • 👋Welcome
  • 📖前端基础
    • HTML
      • 基础知识
      • 进阶知识
      • HTML5
    • CSS
      • 基础知识
      • 进阶知识
      • CSS 专题
        • CSS 选择器
        • CSS 布局
        • CSS 动画
        • CSS 画图
        • 响应式方案
        • CSS BEM 规范
        • CSS 案例
    • JavaScript
      • 基础知识
      • 进阶知识
      • 常用内置对象
        • Array 对象
        • String 对象
        • Number 对象
        • Boolean 对象
        • Math 对象
        • Date 对象
        • RegExp 对象
        • Object 对象
      • JS 专题
        • 数据类型
        • 原型链/继承
        • 对象赋值与拷贝
        • this 的指向
        • 异步操作
        • 模块化
        • 设计模式
    • 浏览器
      • 浏览器模型
      • 事件
      • 位置属性
      • Web 缓存
      • 本地存储
    • 综合内容
      • 前端跨域
      • 登录鉴权
      • 文件上传与下载
  • 🏗️前端框架
    • Vue.js
      • 基础知识
      • Vue 组件通信
      • Vuex 使用指南
      • Vue 动画
      • 静态网站框架 VuePress
    • React.js
      • 基础知识
      • 组件通信
  • 📦计算机基础/后端
    • 图解计算机网络
    • HTTP/HTTPS
    • TCP/UDP
    • Node.js
    • MongoDB
  • 🛠️开发工具
    • 版本控制工具-Git
      • git submodule
    • 构建工具-Webpack
    • 错误监控工具-Sentry
    • 单元测试工具-Jest
    • 包管理工具-NPM
    • 代码编辑器-VSCode
  • 🤔专题内容
    • 前端工程化
    • 代码规范
      • JavaScript 代码规范
      • CSS 代码规范
      • Vue 代码规范
      • Git Commit 规范
      • 代码规范配置
    • 网络安全与防御
    • 性能优化
    • 算法编程
    • 数据可视化
  • 🧑‍💻 面试相关
    • 面试知识总结
    • 面试问题总结
    • 面试常见编程
    • 面试资源汇总
  • 🍭其他
    • 项目经验❗️
    • 踩坑指南❗️
      • JavaScript 踩坑指南
      • CSS 踩坑指南
      • Vue 踩坑指南
    • 学习资源
    • 综合收藏夹
由 GitBook 提供支持
在本页
  • 1. 子模块添加
  • 2. 子模块更新
  • 3. 子模块删除

这有帮助吗?

  1. 开发工具
  2. 版本控制工具-Git

git submodule

上一页版本控制工具-Git下一页构建工具-Webpack

最后更新于3年前

这有帮助吗?

参考资料:

1. 子模块添加

首先需要有一个父仓库和子仓库,克隆并进入父仓库,在父仓库下将子仓库通过 git submodule 添加至父仓库,例如git submodule add <仓库地址> demo则会在父仓库下有一个名叫demo的文件夹,里面是子仓库的内容。

$git clone <父仓库地址>
$cd <父仓库本地路径>
$git submodule add <子仓库地址> <子仓库本地路径>

添加成功后,在父仓库根目录增加了.gitmodule文件。

[submodule "demo"]
    path = demo
    url = <子仓库地址>

克隆一个包含子仓库的仓库目录,并不会clone下子仓库的文件,只是会克隆下.gitmodule描述文件,需要进一步克隆子仓库文件。

$git submodule init
$git submodule update

或

$git submodule update --init --recursive

2. 子模块更新

情况1:如果在父仓库中进行子模块修改,则可以同步更新子模块,进入子模块的路径,进行正常的commit和push即可。

$cd <子仓库路径>
$git commit -m 'update'
$git push

情况2:如果子模块的维护者提交了更新,那么使用子模块的项目必须手动更新才能包含最新的提交。

$cd <子仓库路径>
$git pull

3. 子模块删除

  • rm -rf 子模块目录 删除子模块目录及源码;

  • 删除项目目录下.gitmodules文件中子模块相关条目;

  • 删除配置项.git/config中子模块相关条目;

  • rm .git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可 。

如果你对内容有任何疑问,欢迎提交 或

🛠️
《git submodule 使用小结》
《Git Submodule使用完整教程》
《git submodule 使用》
❕issues
✉️ email