git clone几种可选参数的使用与区别[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。
背景
github clone代码的速度,依赖于代码库的大小以及clone速度,基本是几十kb到200kb之间。要是能达到400kb,恭喜你;要是只有十几kb,emmmm, 还是先去吃饭吧。
这里以MOOC 为例说明 在clone某个git仓库时候需要注意的几个问题。
- 全克隆
- 单一克隆
- 深度克隆
全克隆
很好理解, 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
git clone git_仓库_url
获取全部branch内容,整体下载时间较长 & 所占磁盘空间较大git clone -b git_分支名称 git_仓库_url
根上述 1. 结果一致git clone -b git_分支名称 --single--branch git_仓库_url
获取指定分支的代码git clone --depth 10 git_仓库_url
只会获取最近 xx(10条提交记录的)代码,默认是master分支, 如果想要指定分支,可以结合-b --single--branch
使用!
祝近安 木丁糖 2018年5月2日
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162564.html原文链接:https://javaforall.cn
相关文章
- 一文吃透 VS Code+Git 操作(vs code中git的相关配置与使用)
- git修改gitignore不生效_github ignore
- 如何使用git 生成patch 和打入patch
- git 报错Git fatal: Unknown index entry format xxxxx的错误解决方法
- Git使用
- 解决 macOS Ventura 使用 ssh/git 等无法正常使用的问题
- Git使用流程_git提交流程
- Git版本控制入门
- .git 目录结构内容解析
- Git和gdb的使用
- 【错误记录】Git 使用报错 ( no changes added to commit (use “git add“ and/or “git commit -a“) )
- 【问题记录】ANOMALY: use of REX.w is meaningless (default operand size is 64)导致git命令无法使用
- Git提交代码的流程——新手适用详解程序员
- Git在Linux系统上的安装及使用(git安装linux)
- 学习Linux使用Git进行版本控制(linux使用git命令)
- 轻松玩转Git:Linux环境下的版本管理(linux下使用git)
- 深入浅出:Linux下Git使用指南(linux下git使用)
- Git客户端TortoiseGit(Windows系统)的使用方法