git 子模块

2023-05-16

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

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

1. clone 含有子模块的项目

     git clone --recurse-submodules https://github.com/xxxxxxx  

     它就会自动初始化并更新仓库中的每一个子模块, 包括可能存在的嵌套子模块。

   如果你已经克隆了项目但忘记了 --recuerse-submodules,那么可以运行。

   git submodule update --init     将 git submodule initgit submodule update 合并成一步。

   如果还要初始化、抓取并检出任何嵌套的子模块, 请使用简明的:

   git submodule update --init --recuerse

 先解释一下:

项目中依赖子模块版本(或者叫节点)的更新,与子模块的更新是不一样的,区别是:子模块更新了,主项目中pull 是不会有任何子模块代码更新提示的,但是如果子模块更新了,并且主项目依赖子模块的版本或者叫节点更新了,这时候pull,就会提示你子模块有更新。

 这个 base-custom 就是在主项目中的一个子模块,@6e0dab1 就是主项目依赖子模块的一个版本(叫节点也行),同是这个 @6e0dab1 也是子模块中的 commit Id

2.将本地的子模块更新到最新版本(也可以理解成:将主项目的依赖的子模块的版本更新到最新

如果子模块有内容更新,但是你主项目依赖子模块的版本号没有更新,你在主项目 git pull 的时候,不会提示你子模块有更新,更不会更新子模块的内容 。

如果你需要将主项目依赖子模块的版本号更新:也就是将本地子模块更新到最新版本

你可以在主项目的目录下执行:

git submodule update --remote   拉取远程子模块最新版本

执行完上述命令后,你的本地已经拉取到最新的子模块的版本了,本地子模块的代码也是最新的

git status 

 这时候,如果你确定你要将子模块的代码更新到最新,你可以按部就班的执行 add,commit,push操作,之后,远程仓库就会更新依赖子模块的commit id为你提交的最新的 

但是,如果这个时候,你又不想更新子模块了,你可以执行

git submodule update 

这里就会提示你已经checked 到 你执行 git submodule update --remote 之前的那个版本 

git status 看一下

  很干净。

3. 拉取别人更新好的 主项目依赖子项目的最新版本

这个是指,子模块内容有更新,并且主项目远程已经更新到最新的子项目依赖版本,也就是你本地子模块依赖节点(版本)和远程的子模块不一致,这时候你需要更新到最新。

一般我们在写好代码,push之前,都需要先pull,远程拉取一下,这时候如果远程子模块依赖节点有更新,如:

但是此时 一定要注意:这种状态它并没有帮你更新子模块,只是帮你更新了主模块依赖子模块的节点,你可以看看自己的子模块的代码还是旧的。

git status 看看(这种情况不要去add, commit ,push,因为你还是老版本的子模块,提交了会覆盖别人更新的新版本的子模块)

然后你可以执行  git submodule update (更新子模块的内容) 。

执行完成后,这时候才更新了最新子模块的代码。

git status 看看 

 

 子模块已经更新到了最新的,状态也很干净!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git 子模块 的相关文章

  • QComboBox

    文章目录 1 QComboBox1 1 QComBox简介 1 QComboBox 1 1 QComBox简介 QComboBox 是下拉列表框组件类 xff0c 它提供一个下拉列表供用户选择 xff0c 也可以直接当作一个 QLineEd
  • QTreeWidget

    文章目录 1 QTreeWidget1 1 QTreeWidget简介 1 QTreeWidget 1 1 QTreeWidget简介 在 Qt 中的树形控件称为 QTreeWidget xff0c 而控件里的树形节点称为 QTreeWid
  • QMouseEvent

    文章目录 1 QMouseEvent1 1 特别说明 2 通过QMouseEvent事件实现窗口移动 1 QMouseEvent 1 1 特别说明 QMouseEvent没啥要注意的 xff0c 就是对于mouseMoveEvent xff
  • 1.基础概念【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 ARM 我们经常听所ARM xff0c 其实ARM有两种含义 xff1a ARM是一家公司 xff0c ARM也是一种处理器架构 RISC是精简指令集 xff0c 旨在
  • 2.单片机开发模式【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 单片机上手思路 对于一款新单片机 xff0c 我们可以采取如下思路进行上手 xff1a 去芯片原厂官网 xff0c 下载资料 xff0c 主要是获取数据手册和参考手册
  • 3.时钟与GPIO【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 时钟系统 首先我们要知道时钟的主要作用是用来同步 xff0c 现代的计算机系统是必然有时钟的 并且 xff0c 对于高级的单片机系统 xff0c 还会存在着不同频率的时
  • 4.中断与串口【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 中断 我们先来看一下什么是中断 xff1a 其实这种就是前后台的程序设计模式 我们来看下CM3内核都有哪些中断 xff0c 如下表 xff1a 对于CM3内核的单片来说
  • APT Hash sum mismatch错误的常见解决方法总结

    APT Hash sum mismatch错误的常见解决方法总结 LINUX报这个错误的时候 xff0c 有很多的原因 xff0c 通常是出现在使用apt get update的时候 xff0c apt 的全称是Advanced Packa
  • 安装Nvidia驱动run文件

    本文系转载 xff0c 出处 xff1a https blog csdn net lhx 998 article details 76135936 下载指定NVIDIA驱动安装包 xff08 run格式 xff09 run格式文件安装有时比
  • 5.AT指令【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 ESP8266 本文要使用的wifi模块为ESP8266 xff0c 我们直接使用官方提供的固件即可 xff0c 无须单独开发 直接通过串口和wifi模块进行通信 xf
  • 6.编写初步程序【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 程序流程回顾 先来回顾下TCP连接的流程 xff1a 下面看下UDP连接的流程 xff1a 整个程序的框架如下 xff1a 2 代码实现 这里我们使用串口2来操作 xf
  • 7.进一步完善程序【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 增加UDP发送函数 再来回顾下UDP发送的流程 xff1a 对于AT指令来说 xff0c 只是使用的具体指令不同而已 和TCP发送函数非常类似 xff0c 代码如下 x
  • ubuntu16 PL-SLAM编译 踩坑

    首先贴出pl slam readme的第一句话 xff1a 对pl slam的精度不要有太高要求 Notice that this repository is only an open source version of PL SLAM r
  • ROS kinetic 运行s_msckf和 vins_fusion

    s msckf xff1a 采用多状态约束的双目vio系统 注意 imuCallback xff1a 接收IMU数据 xff0c 将IMU数据存到imu msg buffer中 xff0c 这里只会利用开头200帧IMU数据进行静止初始化
  • 服务器查看配额限制: OSError: [Errno 122] Disk quota exceeded

    OSError Errno 122 Disk quota exceeded 是因为磁盘配额不够了 xff0c 即磁盘已满或超出了用户所能使用的配额上限 可以通过如下命令查看配额限制和已经使用的配额 xff1a quota uvs usern
  • colmap 已知pose 重建 kitti数据尝试

    Frequently Asked Questions COLMAP 3 7 documentation COLMAP已知相机内外参数重建稀疏 稠密模型 thronsbird 博客园 Colmap根据相机内外参数重建稀疏模型 m0 47677
  • Umap与 t-sne可视化CNN特征

    考虑到umap 比 t sne快 xff0c 而且全局结构更好 demo网站 Understanding UMAP doc xff1a https github com lmcinnes umap How to Use UMAP umap
  • nn.AdaptiveAvgPool2d() 与 nn.AvgPool2d() 模块的区别

    nn AdaptiveAvgPool2d 与 nn AvgPool2d 模块的区别 jinfeng2411的博客 CSDN博客 nn adaptiveavgpool
  • dataloader卡住

    pin memory 知乎 dataloader卡住 xff01 xff01 xff01 只会git clone的程序员的博客 CSDN博客 dataloader 卡死 PyTorch 训练时中遇到的卡住停住等问题 yyywxk的博客 CS
  • OpenCV单目视觉定位(测量)系统(新增 含代码)

    OpenCV单目视觉定位 xff08 测量 xff09 系统 The System of Vision Location with Signal Camera Abstract This passage mainly describes h

随机推荐