#1.子模块使用场景

有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。

Git 通过子模块来解决这个问题。 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。

#2.开始使用子模块

我们将要演示如何在一个被分成一个主项目与几个子项目的项目上开发。

#2.1.前期的准备工作

在gitee上创建了两个项目,一个mego父项目,一个mego-model子模块项目

#2.2.添加子模块到父项目中

我们首先将一个已存在的 Git 仓库添加为正在工作的仓库的子模块。 你可以通过在 git submodule add 命令后面加上想要跟踪的项目的相对或绝对 URL 来添加新的子模块。

git submodule add https://gitee.com/dafeiyang/mego-model.git

先进到mego目录里

最后我们来看看创建子模块后的父项目目录结构:

默认情况下,子模块会将子项目放到一个与仓库同名的目录中,本例中是 “mego-model”。 如果你想要放到其他地方,那么可以在命令结尾添加一个不同的路径。

思考:如何删除子模块?

这里做了一个示范,直接在文件中删除mego-model目录和.gitmodules文件,再重新加载回mego-model子模块的时候,就会报以下错误。所以删除子模块的时候,不能直接去删文件,需要使用命令去删除。

误删子模块后,可以通过使用以下命令进行恢复。

git submodule update --init --recursive

#2.3..gitmodules 文件

该配置文件保存了项目 URL 与已经拉取的本地目录之间的映射:

如果有多个子模块,该文件中就会有多条记录。 要重点注意的是,该文件也像 .gitignore 文件一样受到(通过)版本控制。 它会和该项目的其他部分一同被拉取推送。 这就是克隆该项目的人知道去哪获得子模块的原因。

#3.克隆含有子模块的项目

Git工具 - 子模块相关推荐

  1. Git 工具 - 子模块 外部引用

    from:https://git-scm.com/book/zh/v1/Git-工具-子模块 Git 工具 - 子模块 子模块 经常有这样的事情,当你在一个项目上工作时,你需要在其中使用另外一个项目. ...

  2. Git详解之六 Git工具(转)

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力. 接下来你 ...

  3. Git详解之六:Git工具

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力.(伯乐在线 ...

  4. Git详解之六 Git工具

    Git详解之六 Git工具 Git工具 现在,你已经学习了管理或者维护 Git仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支 ...

  5. DSP集成开发工具CCS的Git工具使用说明(一)

    关于CCS软件的Git使用说明 1.新建工程 点击窗口上的 File -> New -> CCS Project     如下图所示,设置工程名.工程路径,选择创建 Empty Proje ...

  6. git工具 将源码clone到本地指定目录的三种方式

    git工具 将源码clone到本地指定目录的三种方式 CreationTime--2018年7月27日15点34分 Author:Marydon 1.情景展示 运行git-bash.exe,输入命令: ...

  7. VS Code 0.5添加ES6支持和Git工具改进

    微软多平台Visual Studio 工具VS Code在7月的这次更新中提供了惠及好几种语言的开发者的多项更新.对ECMAScript6 (ES6)的支持就是其亮点之一,另外,所有用户还会发现另一些 ...

  8. 如何将本地文件利用git工具上传到github仓库中(超详细+最新版)

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 如何将本地文件利用 ...

  9. pycharm git工具与coding.net结合

    pycharm git工具与coding.net结合 前提:coding.net中的项目是私密项目 问题描述:在使用pycharm自带的git工具clone(或者push)代码时出现 错误如下: Pu ...

最新文章

  1. Windows10下使用darknet和YOLOV3训练自己的数据集
  2. 2021春季每日一题【week5 未完结】
  3. 最大流最小割经典例题_C/C++知识点之最大流最小割C++实现
  4. 电脑存储:A盘、B盘知识介绍,为何总是电脑磁盘从C盘开始?
  5. linux中python如何调用matlab的数据_特征锦囊:如何在Python中处理不平衡数据
  6. OpenCV中的傅里叶的门道
  7. centos命令行安装mysql_Centos下安装mysql 总结
  8. python计算坐标点欧式距离_计算机视觉课堂笔记-4
  9. HDU2000 ASCII码排序【字符串排序】
  10. rapidminer员工离职分析_员工一言不合就离职怎么破?我有Python员工流失预警模型...
  11. 开源监控系统------Zabbix
  12. 十六进制数相加校验和计算程序
  13. 用VBA自动整理系统导出的订单
  14. PCB走线电感、导线电感、过孔电感 计算公式
  15. DotA2表演赛全面总结 EHOME重拾王者霸气
  16. 基于Boost.Asio的异步编程
  17. pr零基础晋升笔记(学习复习用)
  18. 简单数据类型的转换和条件控制语句(if else)的使用
  19. 如何在Ubuntu系统下使用扫描仪(by quqi99)
  20. 4G、5G RLC AM模式数据和控制报文格式的区别

热门文章

  1. 娱乐社交,玩票大的!2021网易云信“融合通信开发者大赛”正式开赛!
  2. 网易互客敏捷交付实践
  3. 0129互联网新闻 | 平安好医生无人诊所进驻高速公路服务区; 第五批游戏版号下发...
  4. 为什么互联网能创造商业奇迹——我的互联网产品观
  5. [JVM-3]Java垃圾回收(GC)机制和垃圾收集器选择
  6. 仿探探卡片滑动vue封装并发布到npm
  7. 纯CSS打造可折叠树状菜单
  8. 130506datafile和tablespace offline区别
  9. Java调用SQL Server的存储过程详解
  10. Java并发编程系列之Semaphore详解