首页 > 其他分享 >git --- 子模块 submodule

git --- 子模块 submodule

时间:2024-04-04 15:55:54浏览次数:26  
标签:git recursive clone --- submodule 模块 克隆

git clone —recursive 介绍

git clone命令是Git版本控制系统中的一个常用命令,用于将远程仓库克隆到本地。而git clone --recursive则是在克隆时将子模块也一并克隆下来。子模块是指嵌套在主项目中的其他Git仓库,这样可以方便地管理多个相关的项目。

 

为什么要使用git clone —recursive

在某些情况下,主项目依赖于其他的子模块,这些子模块可能是外部的库或者其他的项目。如果只使用普通的git clone命令,只会将主项目克隆下来,而不会将子模块也一并克隆下来。这样就无法完整地获取到项目的所有代码和依赖。使用git clone --recursive命令可以解决这个问题,确保项目的完整性。

要使用git clone --recursive命令,只需要在克隆命令后面加上--recursive选项即可。例如:

git clone --recursive https://github.com/user/repo.git

这样就会将主项目和所有的子模块都克隆到本地。

git clone —recursive的原理

git clone --recursive命令的原理是通过.gitmodules文件来确定项目中的子模块信息。.gitmodules文件是一个纯文本文件,记录了子模块的路径、URL和提交版本等信息。当使用git clone --recursive命令时,Git会先克隆主项目,然后根据.gitmodules文件中的信息,逐个克隆子模块。

git submodule add 介绍

将URL的仓库作为本仓库的子模块。执行后,git会将URL的仓库clone到 当前路径下。

git submodule add URL

后面可以 指定路径

git submodule add URL <path>

 

【注意】路径需要包含子模块的文件夹名称,如不包含会报错 <path> already exists and is not a valid git repo

【注意】如先前删除过目录,但没有及时commit提交到本地库,在引用同名称子模块时,会报错 <path> already exists in the index。

submodule 执行后,git会将URL的仓库clone到指定路径下。并于工程根目录创建一.gitmodules文件,包含子模块的路径、URL和分支信息。

-b 指定分支版本。

git submodule add -b release/v8.0 https://github.com/lvgl/lv_demos.git components/lv_demos

 

标签:git,recursive,clone,---,submodule,模块,克隆
From: https://www.cnblogs.com/god-of-death/p/18114256

相关文章

  • 操作系统综合题之“采用时间片轮转调度算法(Round-Robin,RR)执行,分时系统中的进程可能出
    一、问题:某分时系统中的进程可能出现下图所示的状态变化,请回答下列问题:1.根据图示,您认为该系统采用的是什么进程调度策略?2.把图中所示的每一个状态变化的原因填在下表相应位置。变化原因1 2 3 4 5 6 二、参考答案答:1.时间片轮转调度......
  • CMU15418-Assignment2-解析
    CMU15418-Assignment2-解析这个作业有三个部分,都是CUDA编程.前两个比较简单,最后一个比较难.本文的运行环境:RTX3090CUDA12.2作业描述,原版代码链接,我完成的代码链接.Part1:SAXPY用CUDA实现一个在GPU上运行的SAXPY程序.输入两个数组X,Y以及一个常......
  • Metasploit Framework 6.4 (macOS, Linux, Windows) - 开源渗透测试框架
    MetasploitFramework6.4(macOS,Linux,Windows)-开源渗透测试框架Rapid7Penetrationtesting请访问原文链接:https://sysin.org/blog/metasploit-framework-6/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org世界上最广泛使用的渗透测试框架知识就是力量,尤......
  • Python快速入门系列-8(Python数据分析与可视化)
    第八章:Python数据分析与可视化8.1数据处理与清洗8.1.1数据加载与查看8.1.2数据清洗与处理8.1.3数据转换与整理8.2数据可视化工具介绍8.2.1Matplotlib8.2.2Seaborn8.2.3Plotly8.3数据挖掘与机器学习简介8.3.1Scikit-learn8.3.2TensorFl......
  • 超强来袭 基于卷积神经网络结合双向长短记忆网络CNN-BiLSTM实现风电功率多输入单输出
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • IT服务专业英语-系列4
    Site-to-siteVPNroutingexampleIntroductionAsite-to-siteVPNsetupconsistsofatleasttwonetworksconnectedviaa virtualprivatenetwork. Usetheprocedureinthisguidetosetupasite-to-siteVPNconnectionwithAccessServerandasite-to-sit......
  • ctfshow--web11session置空绕过
    代码审计点击查看代码<?phpfunctionreplaceSpecialChar($strParam){$regex="/(select|from|where|join|sleep|and|\s|union|,)/i";returnpreg_replace($regex,"",$strParam);}if(strlen($passw......
  • Cisco Unified Communications Manager (CallManager) 15.0 SU1 - 统一通信与协作
    CiscoUnifiedCommunicationsManager(CallManager)15.0SU1-统一通信与协作思科统一通信管理器(CallManager)请访问原文链接:https://sysin.org/blog/cisco-ucm-15/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org思科统一通信管理器企业统一通信和协作借助......
  • 从零开始学Spring Boot系列-集成MyBatis-Plus
    在SpringBoot应用开发中,MyBatis-Plus是一个强大且易于使用的MyBatis增强工具,它提供了很多实用的功能,如代码生成器、条件构造器、分页插件等,极大地简化了MyBatis的使用和配置。本篇文章将指导大家如何在SpringBoot项目中集成MyBatis-Plus。一、项目准备首先,确保你已经安装了Jav......
  • 设备驱动-16-Linux 内核LED子系统
    1LED子系统介绍led子系统相关描述可在内核源码Documentation/leds/leds-class.txt了解。led子系统是一个简单的Linux子系统,在目录/sys/class/leds下展示该子系统设备,每个设备都有自己的属性:brightness:设置LED亮度,范围0~max_brightnessmax_brightness:最大亮度......