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 -- ...
随机推荐
- 关于『进击的Markdown』:第四弹
关于『进击的Markdown』:第四弹 建议缩放90%食用 美人鱼(Mermaid)悄悄的来,又悄悄的走,挥一挥匕首,不留一个活口 又是漫漫画图路... 女士们先生们,大家好! 我们要接受Markd ...
- PostMan 快快走开, ApiFox 来了, ApiFox 强大的Api调用工具
简介 为什么要用ApiFox呢, 一般现在程序员开发测试, 一般都是PostMan, PostWoman等Api调用工具, 我之前也是一直在用, 但是今天我发现了一款相比于Postman更加好用的工具 ...
- Spring cloud gateway 如何在路由时进行负载均衡
本文为博主原创,转载请注明出处: 1.spring cloud gateway 配置路由 在网关模块的配置文件中配置路由: spring: cloud: gateway: routes: - id: ...
- 百度地图API 地图圈区域并计算坐标点是否在区域内
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Python中的逻辑表达式
首先要明确一点,Python的逻辑运算符,可以用来操作任何类型的表达式(不局限于Bool类型),且运算后的结果也不一定是Bool类型的,而是其左右其中一个表达式的值 表达式1 and 表达式2 pyt ...
- 打字速度单位WPM、KPM定义与计算方法
国际通行的打字速度单位是WPM,用来量度打字速度的快慢.另外还有相关的KPM.CPM.KPH等打字速度单位,下面一一介绍. ----WPM------------------------------- ...
- 如何正确理解古典概率中的条件概率 《考研概率论学习之我见》 -by zobol
"B事件发生的条件下,A事件发生的概率"? "在A集合内有多少B的样本点"? "在B约束条件下,A发生的概率变化为?" "B事件中 ...
- 『忘了再学』Shell流程控制 — 35、多分支case条件语句
目录 1.case条件语句介绍 2.case语句需要注意的内容 3.练习 示例1 示例2 1.case条件语句介绍 case语句和if-elif-else语句一样都是多分支条件语句,不过和if多分支条 ...
- CentOS中实现基于Docker部署BI数据分析
作为一个专业小白,咱啥都不懂. linux不懂,docker不懂. 但是我还想要完成领导下达的任务:在linux中安装docker后部署数据可视化工具.作为一名敬业 的打工人摆烂不可以,躺平不可以,弱 ...
- UiPath剪贴板操作的介绍和使用
一.剪切板操作的介绍 模拟用户使用剪切板操作的一种行为: 例如使用设置剪切板(SettoClipboard),从剪切板获取(GetfromClipboard)的操作 二.剪切板相关操作在UiPath中 ...