git clone几种可选参数的使用与区别[通俗易懂]

git clone几种可选参数的使用与区别[通俗易懂]背景githubclone代码的速度,依赖于代码库的大小以及clone速度,基本是几十kb到200kb之间。要是能达到400kb,恭喜你;要是只有十几kb,emmmm,还是先去吃饭吧。这里以MOOC为例说明在clone某个git仓库时候需要注意的几个问题。全克隆单一克隆深度克隆全克隆很好理解,gitclonegit_仓库_url。存在一个问题,当clone…

大家好,又见面了,我是你们的朋友全栈君。

背景

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

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

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

全克隆

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

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

git clone结果
注意其中的 1428 数字,说明 git clone 的objects总数是1428。 再看下branch 有什么结果呢?
git 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

带 -b 参数

git branch -a
git branch

综合 上文的 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
single-branch效果图

git branch -a
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
--depth=10

git branch -a
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 使用!

祝近安
木丁糖
2018年5月2日

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162564.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 前端学到什么程度可以找到工作(应届毕业生有什么优势)

    目录1.前端开发下载安装VScode优化配置2、插件安装3、设置字体大小4、开启完整的Emmet语法支持5、视图2.Node.js入门2.1、什么是Node.js2.2、Node.js有什么用2.3、安装下载:2.4、快速入门2.5、服务器端应用开发3、ES6入门3.2、let声明变量3.3、const声明常量3.4、解构赋值创建3.5、模板字符串创建3.6、声明对象简写创建3.7、定义方法简写3.8、对象拓展

    2022年4月16日
    44
  • IOC 控制反转[通俗易懂]

    IOC 控制反转[通俗易懂]SpringFramework概述https://blog.csdn.net/centrl/article/details/115519480通过前面的学习,我们至少已经知道IOC,下面我们就来说说IOC是个什么东西。1.写在前面首先来想一件事,作为程序员,怎么开发程序才最巴适?我觉得最起码有两点:开发简单、升级简单。开发简单,就是我们只管写业务逻辑(培养只会写if-else的程序员)。 升级简单,这里也包含两点:我们使用的技术(可理解为框架)出了什么问…

    2022年6月16日
    33
  • java 还原中文utf-8格式编码的字符

    java 还原中文utf-8格式编码的字符java 还原中文utf-8格式编码的字符

    2022年4月23日
    78
  • jdbc连接mysql5.7_JDBC连接MySQL5.7的方法

    jdbc连接mysql5.7_JDBC连接MySQL5.7的方法1.首先准备mysql和eclipse环境,在环境搭建好之后,从eclipse官网下载jdbc的驱动包,下载地址http://dev.mysql.com/downloads/connector/j/2.从下载的文件中取出mysql-connector-java-5.1.31-bin.jar,放到工程中,并导入路径方法:右击工程名->BuildPath->ConfigureBuil…

    2022年9月8日
    0
  • ios发的gif图不动_怎么暂停gif

    ios发的gif图不动_怎么暂停gif其实网上GitHub有很多第三方的,但是用起来比较麻烦,这里介绍最简单的一种方式,自己就可以实现,(点击按钮开始播放动态图)1,集成SDWebImage之后,引入头文件#import"U

    2022年8月4日
    4
  • oracle存储过程语法与使用

    oracle存储过程语法与使用oracle存储过程的基本语法1.基本结构  1CREATEORREPLACEPROCEDURE存储过程名  2IS  3BEGIN  4NULL;  5END;行1:CREATEORREPLACEPROCEDURE是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程,如果存在就覆盖它;行2:  IS关键词表明后面

    2022年7月17日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号