【Git学习】Git如何Clone带有Submodule的仓库?
文章目录
- 一、问题描述
- 二、解决问题
- 三、参考链接
- 四、解决问题
- 4.1 下载主模块
- 4.2 查看主模块的配置
- 4.2 子模块的添加
- 4.3 查看子模块的配置
- 4.4 查看子模块的检出状态
- 4.5 检出submodule
- 4.6 再次查看.git/config
- 4.7 重新打开Android Studio运行代码
一、问题描述
在GitHub上下载了一份源码
- https://github.com/the3deer/android-3D-model-viewer
打开之后如下所示:
- 在
app
这个主module
中是需要依赖子module
:engine
的 - 但是下载下来的代码
engine
是空的
二、解决问题
去这个代码的Github主页:https://github.com/the3deer/android-3D-model-viewer探索答案:
-
这份GitHub源代码上没有engine的代码
-
GitHub的README.md文档中有描述
需要添加git submodule下载代码下来
好嘛,得使用git submodule add
来添加 engine
这个子module
.
下面来介绍下git submodule
的知识。
三、参考链接
读者可以详情参考下面的链接,去了解git submodule
的知识点。
- Git Submodule使用完整教程
- Git添加子模块(submodule)
- git中submodule子模块的添加、使用和删除
- git submodule的添加、删除和更新子目录中的分支
四、解决问题
为了演示方便,我们将项目删除,全部重新来一次。
4.1 下载主模块
-
复制主模块的下载链接
-
执行如下命令下载主模块
git clone https://github.com/the3deer/android-3D-model-viewer.git
下载过程中…
下载完毕
可以看到下载下来的主模块,有子模块目录 engine
但是 engine
目录是个空目录。
4.2 查看主模块的配置
因为我们已经将主模块下载下来了,所以就查看下配置,如下所示:
$ cat .git/config
[core]repositoryformatversion = 0filemode = falsebare = falselogallrefupdates = truesymlinks = falseignorecase = true
[remote "origin"]url = https://github.com/the3deer/android-3D-model-viewer.gitfetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]remote = originmerge = refs/heads/main
4.2 子模块的添加
git submodule add <url> <path>
上述代码段中<url>
为需要添加的子模块地址,<path>
为需要将子模块添加到的目的路径。
若是将子模块添加到此目录下,则上述代码段的<path>
可省略
这个示例,我们执行下面的代码
git submodule add https://github.com/the3deer/android-3D-engine.git
好嘛,执行直接失败!!!
$ git submodule add https://github.com/the3deer/android-3D-engine.git engine/
fatal: 'engine' already exists in the index
看来是早已经添加过了,我们去查看下配置
4.3 查看子模块的配置
在项目中,有个.gitmodules
的文件,如下所示:
我们查看下内容:
$ cat .gitmodules
[submodule "engine"]path = engineurl = https://github.com/the3deer/android-3D-engine.git
原来如此,.gitmodules
记录了每个submodule
的引用信息,知道在当前项目的位置
以及仓库
的所在。
4.4 查看子模块的检出状态
$ git submodule
-525e9a5246c106f6eaab7e615c81108bd405d5d6 engine
看到submodules
的状态是hash
码和文件目录
,但是注意前面有一个减号:-
,含义是该子模块还没有检出。
OK,那么我们就检出这个主module
的submodules
4.5 检出submodule
克隆项目后,默认子模块目录下无任何内容。需要在项目根目录执行如下命令完成子模块的下载:
git submodule init
git submodule update
我们来实践一下
$ git submodule init
Submodule 'engine' (https://github.com/the3deer/android-3D-engine.git) registered for path 'engine'$ git submodule update
Cloning into 'E:/GitHubCode/android-3D-model-viewer/engine'...
Submodule path 'engine': checked out '525e9a5246c106f6eaab7e615c81108bd405d5d6'
好的,顺利的clone了子module仓库下来
4.6 再次查看.git/config
$ cat .git/config
[core]repositoryformatversion = 0filemode = falsebare = falselogallrefupdates = truesymlinks = falseignorecase = true
[remote "origin"]url = https://github.com/the3deer/android-3D-model-viewer.gitfetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]remote = originmerge = refs/heads/main
[submodule "engine"]active = trueurl = https://github.com/the3deer/android-3D-engine.git
4.7 重新打开Android Studio运行代码
主模块和子模块是两个不同的仓库,但是可以一起运行了!!!
相关文章:
【Git学习】Git如何Clone带有Submodule的仓库?
文章目录一、问题描述二、解决问题三、参考链接四、解决问题4.1 下载主模块4.2 查看主模块的配置4.2 子模块的添加4.3 查看子模块的配置4.4 查看子模块的检出状态4.5 检出submodule4.6 再次查看.git/config4.7 重新打开Android Studio运行代码一、问题描述 在GitHub上下载了一…...
C语言进阶——通讯录模拟实现
🌇个人主页:_麦麦_ 📚今日名言:只有走在路上,才能摆脱局限,摆脱执着,让所有的选择,探寻,猜测,想象都生机勃勃。——余秋雨《文化苦旅》 目录 一、前言 二、正…...
【C#基础】C# 变量和常量的使用
序号系列文章1【C#基础】C# 程序通用结构总结2【C#基础】C# 程序基础语法解析3【C#基础】C# 数据类型总结文章目录前言一. 变量(variable)1,变量定义及初始化2,变量的类别3,接收输出变量二. 常量(constant&…...
nvm安装后出现‘node‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
出现这个问题多半是path地址不对。 打开系统环境变量。看看path里面有没有?没有的话,加上就行! 我的报错原因就是因为path里没有自动加上nvm的相关路径。 注意项: 1,在安装nvm之前,提前要把本机以前安装…...
张驰咨询:关于六西格玛,有一些常见的疑惑!
很多想要学习六西格玛的学员,经常会有这些困惑: 以前没有接触过六西格玛,需要什么基础吗?自学还是培训?哪些行业会用到六西格玛呢?学习六西格玛对以后的工作有哪些帮助?如何选择六西格玛培…...
【Vercel】教你部署imsyy/home个人主页
本篇博客教你如何部署一个自己的个人主页 项目地址:https://github.com/imsyy/home 本文首发于 慕雪的寒舍 1.fork仓库vercel部署 首先我们点击fork,将仓库复刻到自己的账户 随后进入vercel,点击dashboard-add new-project 选择你复刻的仓库…...
GeekChallenge
2.GeekChallenge 1.web 1.朋友的学妹 url:http://49.234.224.119:7413/ 右键点击查看源码,找到flagU1lDe0YxQF80c19oNExwZnVsbGxsbGx9 然后base64解码得到SYC{F1_4s_h4Lpfullllll} 2.EZwww url:http://47.100.46.169:3901/ 根据网站提示…...
Java文件IO
文章目录Java中的文件操作File常用构造方法方法文件内容的读写——数据流InputStreamFileInputStream利用Scanner进行字符读取OutputStreamPrintWriter按字符读取文件(FileReader)练习代码实例如何按字节进行数据读如何按字节进行数据写如何按字符进行数据读如何按字符进行数据…...
useSSL使用安全套接字协议(史上最全最详细)
useSSL使用安全套接字协议(史上最全最详细) SSL即为:Secure Sockets Layer 安全套接字协议。 useSSLfalse和useSSLtrue的区别: 在MySQL进行连接时: 如果MySQL的版本是5.7之后的版本必须要加上useSSLfalse,…...
面向对象复习(2)
面向对象(2) 对象与引用 java语言中除基本类型之外的变量都称之为引用类型 java中的对象时通过引用对其操作的 Car bm new Car(); 右边的new Car是以Car类为模板,调用无参构造函数,在堆空间中创建一个Car对象 左边的Car bm 在栈中创建了一个Car类型的引用变量,所谓Car的…...
python中使用numpy包的向量矩阵相乘
一直对np的线性运算不太清晰,正好上课讲到了,做一个笔记整个理解一下 1.向量和矩阵 在numpy中,一重方括号表示的是向量vector,vector没有行列的概念。二重方括号表示矩阵matrix,有行列。 代码显示如下: …...
ElasticSearch 学习(一)
目录一、Elasticsearch 简介二、Elasticsearch 发展史三、Elasticsearch 功能四、Elasticsearch 特点五、Elasticsearch 应用场景一、Elasticsearch 简介 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据…...
【新】华为OD机试 - 交换字符(Python)| 刷完获取OD招聘渠道
交换字符 题目 给定一个字符串 S 变化规则: 交换字符串中任意两个不同位置的字符 M S 都是小写字符组成 1 <= S.length <= 1000 输入 一串小写字母组成的字符串 输出 按照要求变换得到最小字符串 示例一 输入 abcdef输出 abcdef示例二 输入 bcdefa输出 acde…...
手把手教你解决传说中的NPE空指针异常
1. 前言最近有好几个初学java的小伙伴,甚至是学习到了JavaWeb、框架阶段的小伙伴也跑来问壹哥,该如何解决Java中的NullPointerException空指针异常。因为NPE是初学者特别常见的典型异常,所以壹哥在这里专门写一篇文章,来手把手地教…...
【pytorch安装】conda安装pytorch无法安装cpu版本(完整解决过程)
问题描述 在安装pytorch过程中,发现最后验证torch时总是返回结果为False,结果翻上去发现自己安装的是cpu版本的。 然后又通过conda去更换不同版本尝试,发现都是cpu版本的。 问题分析 通过conda安装pytorch是从源中搜索匹配指令中的文件&am…...
云计算ACP云服务器ECS实例题库
😘作者简介:一名99年软件运维应届毕业生,正在自学云计算课程。👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。&…...
面试题:作用域、变量提升、块级作用域、函数作用域、暂存性死区、var和let的区别
<script>var a 10;(function () {console.log(a)a 5console.log(window.a)var a 20;console.log(a)})() </script> 上述代码: 1、主要是涉及到变量提升和函数作用域,var a20这行代码会在函数作用域中提升var a 至最顶部…...
JAVA练习49-爬楼梯
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-爬楼梯 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 2月13日练习内容…...
深兰科技机器人商丘制造基地正式投产,助力商丘经济高质量发展
2月9日,深兰科技机器人商丘制造基地投产仪式在商丘市梁园区北航创新园隆重举行。商丘市人大常委会副主任、梁园区委书记张兵,梁园区区长薛天江、河南省装备制造业协会会长张桦,河南省机器人行业协会会长王济昌,深兰科技集团董事长…...
ES倒排索引/查询、写入流程
ES学习笔记 Elasticsearch学习笔记_巨輪的博客-CSDN博客 Elasticsearch学习之图解Elasticsearch中的_source、_all、store和index属性_BUse的博客-CSDN博客 倒排索引 倒排索引:ES倒排索引底层原理及FST算法的实现过程_es fst_Elastic开源社区的博客-CSDN博客 【…...
2023软考考哪个证书好?
软考有三个级别(初级,中级和高级),这三个级别分别对应5个方向,下面这张图片呢,可以一目了然,一些小小建议!!!遵循一个原则:首先选专业对口的科目&…...
一般人我劝你不要自学软件测试!!!
本人5年测试经验,在学测试之前对电脑的认知也就只限于上个网,玩个办公软件。这里不能跑题,我为啥说:自学软件测试,一般人我还是劝你算了吧?因为我就是那个一般人! 软件测试基础真的很简单&…...
docker/docker-compose 安装mysql5.7
目录使用docker安装mysql5.7docker普通安装docker生产环境安装使用docker-compose 安装注意注意一:docker-compose权限问题注意二:docker pull 找不到镜像使用docker安装mysql5.7 docker普通安装 docker pull mysql:5.7 # 启动容器 docker run -p 3306:3306 --name mysql -e …...
【C++设计模式】学习笔记(6):Bridge 桥模式
目录 简介动机(Motivation)模式定义结构(Structure)要点总结笔记结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金…...
Allegro如何批量快速修改复用好的模块操作指导
Allegro如何批量快速修改复用好的模块操作指导 在做PCB设计的时候,相同模块可以用reuse复用的功能,可以大大提升效率,但是模块需要修改的时候,其它模块也要跟着修改,逐个再去复用一遍比较费时间,Allegro支持批量快速修改复用好的模块 前提是相同模块必须是相同的mdd文件…...
让我百思不得其解的infer究竟是怎么推导类型的?
情景再现 有这么一个条件类型的基本语法: T extends U ? X : Y; 如果占位符类型U是一个可以被分解成几个部分的类型,譬如数组类型,元组类型,函数类型,字符串字面量类型等。这时候就可以通过infer来获取U类型中某个部分的类型。 …...
E8-怎么实现根据表单内容自动生成标题
背景 可能有些小伙伴看到这个话题,觉得非常简单,在发起人步骤设置标题可编辑,在有关的控件中设置事件去更新标题就可以了呗。但如果想要标题字段里包含编号呢,而编号是在具体路径的高级设置里设置的,在某个出口生成的…...
《c语言深度解剖》--一套非常经典的笔试题
学习完c语言,需要对所学知识进行一个检测,下面有一套笔试题, 你有四十分钟进行检测,每道题五分,严格要求自己打分。 根据作者原话:在没有何提示的情况下,如果能得满分,那你可以扔掉本书了,因为你的水平已经…...
【数据结构与算法】单调队列 | 单调栈
🌠作者:阿亮joy. 🎆专栏:《数据结构与算法要啸着学》 🎇座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉…...
openh264解码h264视频帧主流程
一 解析一帧的入口int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool bFirstSliceInLayer, PNalUnit pNalCur) {// 解码slicePDqLayer pCurDqLayer pCtx->pCurDqLayer;PFmo pFmo pCtx->pFmo;int32_t iRet;int32_t iNextMbXyIndex, iSliceIdc;PSlice pSlice &a…...
网站内容的编辑和更新怎么做/关键词研究工具
Items Override 覆写Overload 重载位置存在于继承关系的类中存在于同一类中 方法名相同相同参数列表相同必须不同 返回值相同可以不相同 程序中的处理程序运行时 程序编译时 抽象方法使用abstract关键字 public abstract bool Withdraw(…);抽象方法是必须被派生类覆写的方法。…...
wordpress知更鸟begin主题/推广网络推广平台
上一篇博客:面向对象、类与对象 目录 封装 概述封装的步骤封装的操作封装优化标准代码—JavaBean 开始 一、封装概述 面向对象的语言是对客观世界的模拟,客观世界成员变量都是隐藏在对象内部的,外界无法直接操作和修改 封装可以被认为是一…...
网站建设和推广评价指标/上海网站seo公司
✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Great minds discuss ideas. Average minds discuss events. Small minds disc…...
wordpress homeslide/怎样做一个网站
缓存更新策略 被动更新 设置key过期的时间,让其自动失效。 主动更新 更新DB的时候,同时更新缓存。一般业务都是主动更新和被动更新结合使用。 先更新DB,后更新缓存 对于主动更新来说,存在一个问题:你是先更新缓存&…...
科学做视频网站/电子商务培训
紫外光激发使光诱导进入二苯并-,苯并-β-萘酚的花菁-和di-β-萘螺并吡喃的光致变色 从105K开始的温度下会出现各种颜色的异构体。用紫外光激发使光诱导进入二苯并-,苯并-β-萘酚的花菁形式(见下文)。-和di-β-萘螺并吡喃,尽管在此温度下只有少…...
网站首页建设图文教程/重庆网站seo建设哪家好
目录结构Mac快速搭建flink环境1、安装flink2、编写demoMac快速搭建flink环境 1、安装flink (1)、Mac上安装flink很方便。推荐通过 homebrew 来安装: brew install apache-flink(2)、检查安装 flink --version结果&a…...