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 -- ...
随机推荐
- 两个月吃透阿里P9推荐260页SpringBoot2企业应用实战pdf入职定P6+
前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置 ...
- 查询语句写了limit 1,为什么依然很慢?
摘要: 很多时候计算引擎会对语句进行代价估计并调整语句的执行顺序.执行计划是语句如何执行的直观表达.语句如何执行不能只关注语句写法,要想写出符合预期执行顺序的查询语句,还需要关注语句执行计划. 本文分 ...
- 【leetcode 206】 反转链表(简单)
链表 概念: 区别于数组,链表中的元素不是存储在内存中连续的一片区域,链表中的数据存储在每一个称之为「结点」复合区域里,在每一个结点除了存储数据以外,还保存了到下一个结点的指针(Pointer). 由 ...
- django框架8
内容概要 ajax简介 前后端传输数据编码格式 ajax发送json格式数据 ajax携带文件数据 回调机制处理策略 内容详情 ajax简介 页面不刷新的情况下可以与后端进行数据交互 异步提交 局部刷 ...
- 解决python无法打开谷歌浏览器问题
python+selenium 打开浏览器网页时可能会出现两种情况, 一.python 初次打开浏览器未进行安装浏览器控制插件, 二.python 能打开浏览器的情况下,突然有一天发现无法打开并报错新 ...
- 【Java面试】什么是可重入,什么是可重入锁? 它用来解决什么问题?
一个工作了3年的粉丝,去一个互联网公司面试,结果被面试官怼了. 面试官说:"这么简单的问题你都不知道? 没法聊了,回去等通知吧". 这个问题是: "什么是可重入锁,以及它 ...
- JZOJ5384. 【NOIP2017提高A组模拟9.23】四维世界
题目 Description 众所周知,我们常感受的世界是三维的. Polycarp突然对四维空间产生了兴趣,他想对四维空间进行一些研究.但是在此之前,他必须先对三维世界了解透彻. 于是Polycar ...
- C#项目中常见的目录和文件
本文迁移自Panda666原博客,原发布时间:2021年4月17日. Bin 目录 bin是英文binary的缩写, 字面意思是二进制,意指用来存放编译后的结果.C#/VB编译器编译后的程序二进制文件 ...
- Linux 批量杀死进程(详细版本)
使用场景 当程序中有使用到多进程且进程数较多的情况,如下图,且需要通过控制台杀死所有的 GSM_run.py 的进程时,利用 kill 命令一个一个的去结束进程是及其耗时且繁琐的,这时就需要我们的ki ...
- 《ASP.NET Core 6框架揭秘》样章[200页/5章]
作为<ASP.NET Core 3 框架揭秘>的升级版,<ASP.NET Core 6框架揭秘>不仅针对ASP.NET Core 6的新特性进行了修订,并添加了若干原来没有的内 ...