git submodule 实战
1.git submodule指什么
关于git submodule是什么,可以看下面这个链接。
https://www.cnblogs.com/hwx0000/p/14146838.html
2.git submodule init做了什么
当我们git clone某一个git之后,在主目录下会有如下一个文件夹.git和文件.gitmodules(如果父仓下含有子仓)


打开.gitmodules文件,可以看到父仓下所包含的所有的子仓库的信息,一般会有子仓名字,挂载路径,下载地址,有时也会写上branch。
.gitmodules是我们git clone父仓的时候下载下来的,是父仓的文件。

下面开始获取子仓的代码,在主目录下执行git submodule init,会发现在.git文件夹下多了config

config的内容如下,可以发现git submodule init的作用就是将.gitmodules的内容复制一份到config,只不过其中path变成了active属性。
同样一份信息保存两份,有必要吗,当然有必要。
因为我们有时候可能不需要clone所有的子仓,这时我们就可以对config文件进行手动的修改,不clone某些子仓的代码

比起手动修改config文件带来的不规范性,我们可以多次使用命令git submodule init <submodule name 1> <submodule name 2>来添加需要clone的子仓。
当然这时还是没有子仓的代码,下面进入git submodule update。
参考:https://stackoverflow.com/questions/44366417/what-is-the-point-of-git-submodule-init
3.git submodule update
完成上步骤选定需要clone的子仓之后,在主目录下运行git submodule update即可以clone那些上步骤中选定的子仓。
4.当子仓含有子仓
在完成步骤3之后,我们子仓的文件都clone下来了,不过子仓的子仓的代码还是没有,怎么办
方法同上,找到某一个子仓的主目录,可以发现下面从空文件夹,变成如下,并且多了.gitmodules,这表明这个子仓仍然是包含子仓。
在这个路径下运行git submodule init和 git submodule update,就可以clone下来子仓的子仓的代码。

那这里执行完git submodule init之后生成的config放在哪里呢,见下图

5.思考
有点感觉这个过程实在是有点麻烦,幸好项目中包含子仓的子仓只有两个,不多,可以手动的cd到那个文件夹,然后执行git submodule init + update。

我以前并不是这么做的,直接在图形化界面smartgit里面输入父仓的git地址,自动就会帮我把子仓的代码也clone下来,非常方便,不过这次遇到了一个问题
我多次实验发现,smartgit总是提示我下图,一直在clone某个子仓,虽然我一直点击“等待”,仍然不能clone成功。目前推测原因应该是这个子仓特别大,大就会导致时间长,而smartgit时间非常长后,大概8个小时这个级别,好像就会clone不下来,
这时就得只能直接用命令行了。

git submodule 实战的更多相关文章
- Git submodule实战
http://blog.jqian.net/post/git-submodule.html 使用git管理的项目开发中,如果碰到公共库和基础工具,可以用submodule来管理. 常用操作 例如, 公 ...
- git submodule 使用小结
git submodule 使用小结 原文链接 http://blog.gezhiqiang.com/2017/03/08/git-submodule/###### Git Submodule 允许一 ...
- git submodule初用
git submodule主要是用于针对git项目中还存在git子模块的情况.在一般情况下,我们通过git clone 获取项目的时候会把项目中的所有信息都拿到.但是,如果相关中存在git子模块那么, ...
- git submodule 使用
这个是备忘录,原网页: https://medium.com/@porteneuve/mastering-git-submodules-34c65e940407 http://cncc.bingj.c ...
- git submodule(转载)
From:http://www.worldhello.net/2010/01/26/425.html 删除 git submodule (git 库子模组) 有两种情况会创建 git submodul ...
- Git submodule 特性
当你习惯了代码的 VCS 后,基本上是离不开的. 作为一个依赖多个子项目组成的项目,要实现直观的代码逻辑结构,可以考虑使用 Git submodule 特性. 当然,如果只是单独的依赖的话,用依赖管理 ...
- Git subtree和Git submodule
git submodule允许其他的仓库指定以一个commit嵌入仓库的子目录. git subtree替代git submodule命令,合并子仓库到项目中的子目录.不用像submodule那样每次 ...
- 使用git submodule管理一个需要多个分立开发或者第三方repo的项目
在项目开发中,特别是web前端开发中,有非常多的开源第三方library,我们希望引用他们,同时也希望能够方便地保持这些第三方 开源repo的更新.另外一方面如果我们自己在开发一个网站的项目,这个项目 ...
- git submodule的操作
对于有submodule的库,检出的方法是: git clone https://github.com/BelledonneCommunications/linphone-android.git -- ...
随机推荐
- 【Azure 存储服务】Java Azure Storage SDK V12使用Endpoint连接Blob Service遇见 The Azure Storage endpoint url is malformed
问题描述 使用Azure Storage Account的共享访问签名(Share Access Signature) 生成的终结点,连接时遇见 The Azure Storage endpoint ...
- jenkins 自动化部署vue前端+java后端项目 进阶一
今天又不想写了,那么我来将我参考的文章直接分享给大家好了,大家也可以直接进行参考: 这里以centos7为例搭建自动化部署项目: 1.搭建部署前端服务代理nginx: 借鉴于:https://blog ...
- 【Java面试】为什么引入偏向锁、轻量级锁,介绍下升级流程
Hi,我是Mic 一个工作了7年的粉丝来找我,他说最近被各种锁搞晕了. 比如,共享锁.排它锁.偏向锁.轻量级锁.自旋锁.重量级锁. 间隙锁.临键锁.意向锁.读写锁.乐观锁.悲观锁.表锁.行锁. 然后前 ...
- 29.MySQL高级SQL语句
MySQL高级SQL语句 目录 MySQL高级SQL语句 创建两个表 SELECT DISTINCT WHERE AND OR IN BETWEEN 通配符 LIKE ORDER BY 函数 数学函数 ...
- SAP 实例- 下拉框
效果图 源代码 REPORT rsdemo_dropdown_listbox . DATA init. TABLES scarr. TABLES spfli. TABLES sflight. TABL ...
- SE37 绕过权限检查 ALINK_CALL_TRANSACTION
- easyui combobox重复渲染问题
当一个页面有两个easyui combobox存在时,并且同时给两个combobox赋相同值,某些easyui的版本会导致其中一个无法切换选项. 解决办法,分两步赋值,可解决问题
- 排名前三——python 开源 IDE
写在前面的一些P话: Python无处不在 ,似乎它支持从主要网站到桌面实用程序到企业软件的所有功能. Python已经被用来编写流行的软件项目,如dnf / yum,OpenStack,OpenSh ...
- SpringBoot项目集成Swagger启动报错: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is
使用的Swagger版本是2.9.2.knife4j版本是2.0.4. SpringBoot 版本是2.6.2将SpringBoot版本回退到2.5.6就可以正常启动
- # Vue3 toRef 和 toRefs 函数
Vue3 toRef 和 toRefs 函数 上一篇博文介绍了 vue3 里面的 ref 函数和 reactive 函数,实现响应式数据,今天主要来说一下 toRef 函数和 toRefs 函数的基本 ...