背景

github clone代码的速度,依赖于代码库的大小以及clone速度,基本是几十kb到200kb之间。要是能达到400kb,恭喜你;要是只有十几kb,emmmm, 还是先去吃饭吧。

这里以MOOC 为例说明 在clone某个git仓库时候需要注意的几个问题。

  1. 全克隆
  2. 单一克隆
  3. 深度克隆

全克隆

很好理解, git clone git_仓库_url。存在一个问题,当clone的仓库很大的时候,而github又是比较慢的clone速度,导致等待的时间较长。接下来以 MOOC 为例说明 git clone 全克隆

执行
git clone git@github.com:tancolo/MOOC.git 或者
git clone https://github.com/tancolo/MOOC.git 后 git bash 结果如下:


注意其中的 1428 数字,说明 git clone 的objects总数是1428。 再看下branch 有什么结果呢?

说明 git clone 最后的结果是切换的当前 master分支,同时也获得了 remote的所有分支记录信息。 如果你想切换其他分支 直接使用如下方式:

git checkout -b mvp-dev-more remotes/origin/mvp-dev-more 其中mvp-dev-more是本地仓库名字。

所以 全克隆 好处是全部分支都一次性在本地,要切换非常方便。坏处是消耗时间长,而且占用很大的磁盘空间。以MOOC为例,在git bash中执行 du -lh 有34M空间, 这里看着是很小,工程一旦很多,就是你磁盘空间杀手!

单一克隆

既然git clone 默认的是下载全部分支内容,当我只需要某个分支该如何操作呢?例如我只需要 MOOC 仓库中的 mvp-dev-more 这个分支。
有人会说,那就直接采用 -b git_分支名称 方式。 好,接着看下面。

git clone -b mvp-dev-more

执行如下cmd
git clone -b mvp-dev-more git@github.com:tancolo/MOOC.git

git branch -a

综合 上文的 git clone git_仓库_url & git clone -b git_仓库_分支名称 git_仓库_url 二者结果一致, 他们都是将git仓库分支以及信息全部下载到本地。

single-branch

git clone 后面可以携带这个参数 --single-branch
git clone -b mvp-dev-more --single-branch git@github.com:tancolo/MOOC.git

git branch -a

从上可以看到 clone过程中 object数量只有 1269, 之前的数量是1428, 所占用磁盘空间只有 8M, 之前是34M。但是 branch分支只有 mvp-dev-more

所以,github工程文件很大情况,推荐使用 git clone -b git_仓库_分支 --single-branch git_仓库_url。 缺点是看不到其他分支。

深度克隆

深度克隆是我自己取的名字,使用场景是,我只想clone 某个git仓库最近xx次提交的代码。
要完成这样的目的,需要使用 --depth=commit_num 或者 --depth commit_num, 具体如何使用,参考如下。
git clone --depth=10 https://github.com/tancolo/MOOC.git

git branch -a

这么做,能否缩减时间&磁盘空间,我这里测试的结果反而是,下载速度慢,空间反而达到46M。

以此类推,还可以这么操作:
git clone -b mvp-dev-more --single-branch --depth 3 https://github.com/tancolo/MOOC.git

$ git clone -b mvp-dev-more --single-branch --depth 3 https://github.com/tancolo/MOOC.git
Cloning into 'MOOC'...
remote: Counting objects: 440, done.
remote: Compressing objects: 100% (320/320), done.
remote: Total 440 (delta 88), reused 364 (delta 64), pack-reused 0
Receiving objects: 100% (440/440), 1.64 MiB | 16.00 KiB/s, done.
Resolving deltas: 100% (88/88), done.

这样的整体下载速度还是很可以的,获取到最近的代码,时间也快。

内容总结

好了,本文可以总结为,如何正确的使用 git clone

  1. git clone git_仓库_url 获取全部branch内容,整体下载时间较长 & 所占磁盘空间较大
  2. git clone -b git_分支名称 git_仓库_url 根上述 1. 结果一致
  3. git clone -b git_分支名称 --single--branch git_仓库_url 获取指定分支的代码
  4. git clone --depth 10 git_仓库_url 只会获取最近 xx(10条提交记录的)代码,默认是master分支, 如果想要指定分支,可以结合 -b --single--branch 使用!

git clone 几种可选参数的使用与区别相关推荐

  1. 学习 git clone 几种不同的协议

    当我们去github上克隆代码仓库的时候,一般有两种选择,一种是https协议,一种是ssh协议.这也是最常用的两种协议了. 1. HTTPS协议(推荐) 优点: 对新手友好,使用简单,clone的时 ...

  2. git clone时出现的两种错误解决方法

    第一种错误, $ git clone https://github.com/lwfinger/rtl8188eu.git Cloning into 'rtl8188eu'... remote: Enu ...

  3. 函数 函数的基本使用 函数的四种基本形式 可选参数 函数默认参数 函数的剩余参数 构造函数() 函数重(chong)载

    函数主要定义行为的 匿名参数 const mingz = function  无名字(参数:数值类型):返回值的类型 接口函数: type(关键字)  别名 = (参数:number)=>返回值 ...

  4. 解决 git clone fatal: unable to access ‘https://github.com...‘: 的一种方法

    解决 git clone fatal: unable to access 'https://github.com-': Could not resolve host: github.com的一种方法 ...

  5. git clone失败的一种解决办法

    小技巧,有时候通过git clone从github上更新代码失败,比如 git clone https://github.com/xxx.git 提示下载失败, 可以尝试把https://换成 git ...

  6. git clone从远程主机克隆一个版本库

    远程操作的第一步,通常是从远程主机克隆一个版本库,这时就要用到git clone命令. $ git clone <版本库的网址> 比如,克隆jQuery的版本库. $ git clone ...

  7. linux上git克隆命令,Git clone命令用法

    git clone是git中常用的命令,其作用是将存储库克隆到新目录中.那么在git中,git clone具体该如何用呢? 更快更轻松的学习Git,请点击Git微课 git clone命令的作用是将存 ...

  8. 如何“ git clone”包括子模块?

    我正在尝试将子模块放入存储库中. 问题是当我克隆父仓库时,子模块文件夹完全为空. 有什么方法可以使git clone parent_repo实际上将数据放入子模块文件夹中吗? 例如, http : n ...

  9. Git(6)-- 记录每次更新到仓库图文版(git clone、status、add、diff、commit、rm、mv命令详解)

    文章目录 1.克隆现有仓库:`git clone` 2.检查当前文件状态 :`git status` 3.跟踪新文件:`git add` 4.暂存已修改的文件:`git add` 5.状态简览: `g ...

最新文章

  1. MySQL 无效数字_ORA-01722: 无效数字的解决方法
  2. zabbix 监控mysql5.7_使用zabbix对mysql5.7主从进行监控
  3. Python学习:模块
  4. 连不上 GitHub 的朝鲜,也开发出了人脸识别技术
  5. 深入浅出 Spring
  6. c语言作业请输入一个运算符,C语言书面作业1(有答案版)..doc
  7. html中js方法中如何传递本元素对象,JS HTML DOM (文档对象模型)
  8. 年轻人“颜值消费”崛起 分期乐联手屈臣氏发力95后美妆护理市场
  9. 单电源运算放大器全波整流电路_电子电路识图从入门到精通,从零开始学电子电路...
  10. 企业在推行流程管理过程中可能出现以下四个问题
  11. python画简便的图-python如何画出漂亮的地图?
  12. mysql错误诊断_MySQL Server无法启动错误诊断一则
  13. 信捷plc485通信上位机_常用通信接口汇总
  14. ios模拟器装ipa包_给iOS 模拟器“安装”app文件
  15. Python隐形马尔科夫实战_通过Python的Networkx和Sklearn来介绍隐性马尔科夫模型
  16. CICD详解(十)——Jenkins+Gitlab实战
  17. 邮件客户端里的网络设置
  18. 如何恢复已删除的照片
  19. intelliJ IDES MySql数据库JDBC连接代码
  20. csr867x入门笔记(序)

热门文章

  1. FD.io/VPP — QoS — DPDK Hqos
  2. Linux Kernel TCP/IP Stack — L2 Layer — Traffic Control(流量控制)的实现原理
  3. Nova Conductor 与 Versioned Object Model 机制
  4. 用 Flask 来写个轻博客 (36) — 使用 Flask-RESTful 来构建 RESTful API 之五
  5. 3.3V与5V的电平转换
  6. STM32 中JTAG 引脚作为普通IO口设置方法
  7. JS面向对象一:MVC的面向对象封装
  8. Java多线程学习(二)---线程创建方式
  9. 心目中的编程高手zz, 有点academic风格的说^_^
  10. vss2005与vs2005绑定问题解决