IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 学习在Git项目中使用子模块(图文教程) -> 正文阅读

[开发工具]学习在Git项目中使用子模块(图文教程)

一般认为

  1. 父项目 是当前正在做的主要工作,但需要依赖 子模块 中提供的算法或者工具。
  2. 父项目子模块 不是同一批人维护的,或者是需要分开维护的。

此情此景,需要学习该教程了!!!



假设:

  • 父项目仓库地址:https://gitee.com/gisleung/father_repo.git
  • 子模块仓库地址:https://gitee.com/gisleung/son_repo.git

1 如何在父项目添加子模块

将父项目克隆至本地:

git clone https://gitee.com/gisleung/father_repo.git

在这里插入图片描述

然后进入父项目目录,添加子模块:

git submodule add https://gitee.com/gisleung/son_repo.git

此时父项目目录,多了两个文件夹:

  • .gitmodules:记录当前仓库的子仓库信息
  • son_repo:存放子仓库内容

在这里插入图片描述

进入子模块文件夹查看,发现已经将子仓库内容拉取下来:
在这里插入图片描述

当初次添加子模块完毕后,查看子模块的状态:

git submodule

在这里插入图片描述

首次添加子模块,git submodule 时,版本号 9019c 之前没有 + 或者- 号。但下面的教程中会有 + - 的出现,请仔细阅读哦

2 提交推送父项目变更

将已经添加子模块的父目录提交变更,并推送:

git status
git add .
git commit -m 添加子模块
git push

在这里插入图片描述
在这里插入图片描述
我们打开远程仓库看一下结果,发现已经将新变更推送成功。但并没有推动son_repo的内容,相当于只记录了son_repo的地址
在这里插入图片描述

3 更新父项目中的子模块

假如你知道子模块的远程仓库已经有了最新提交:
在这里插入图片描述
那如何在父目录将子模块更新到最新版本呢,?

# 初始化版本
git submodule update --init
# 更新子模块为远程项目的最新版本
git submodule update --remote

此时,父目录中的子模块已经更新到最新:
在这里插入图片描述
马上查看一下子模块的状态:

git submodule

在这里插入图片描述
看到前面有个 + 号,表示子模块改变了,但是父项目没有将此次改变提交。此时应该马上 将父项目 git add .git commit -m 更新子模块 ,然后再查看子模块的状态:

git submodule

在这里插入图片描述
发现 + 号已经没了。

此时,再将父项目推送至远端,那么别人拉取的时候,就会关联最新的子模块了

4 如何拉取包含子模块的父项目

此时父仓库已经有了子模块。删除本地后,重新把包含子模块的father_repo克隆一下:
方式一: 先克父仓库

git clone https://gitee.com/gisleung/father_repo.git

此时子模块的文件夹内是空的,查看子模块的状态:

git submodule

在这里插入图片描述
发现是个- 号。说明子模块还没有初始化。初始化子模块:

git submodule init

在这里插入图片描述
更新子模块:

git submodule update

在这里插入图片描述
完成之后,查看子模块的状态:

git submodule

在这里插入图片描述
此时,子模块的文件夹内就已经有最新(9019c版本)内容了。

这里版本号是 9019c ,是因为前面的版本 f5892 忘记 push

方式二: 递归克隆整个项目

git clone https://gitee.com/gisleung/father_repo.git --recursive 

此时,先克隆父仓库,再克隆子模块。

ok!

5 在父项目修改并推送子模块 (待补充)

一般认为,不会在父项目中更改子模块哦

如果在父目录下,对子模块内容进行修改,会怎么样?
在这里插入图片描述
使用git status 查看父目录状态:
在这里插入图片描述
待补充

一些参考:
https://zhuanlan.zhihu.com/p/367089627
https://www.jianshu.com/p/9000cd49822c
https://blog.devtang.com/2013/05/08/git-submodule-issues/
https://blog.csdn.net/xqj2333/article/details/107826608

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:20:15  更:2022-10-31 12:21:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:49:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码