一条 Git 命令减少了一般存储空间,我的服务器在偷着笑
元旦不是搭建了一个《Java 程序员进阶之路》的网站嘛,其中用到了 Git 来作为云服务器和 GitHub 远程仓库之间的同步工具。

作为开发者,相信大家都知道 Git 的重要性。Git 是一个分布式版本控制软件,初版由 Linus·Torvalds 开发,并于 2005 年以 GPL 许可协议发布。

Git 的牛逼这次就不吹了,毕竟已经吹了 7 篇了,实在是吹不动了!
- 可能是 Git 历史上最伟大的一次代码提交
- 终于有人把 Git 的数据模型讲清楚了
- 昨晚看完 Linus 第一次提交的 Git 代码后,我失眠了!
- 要熟练使用 Git,恐怕要记住这60个命令
- 崩溃!实习生把小组的代码仓库搞得一团糟。。。
- 信不信,7 张图就能让你把 Git 分支管理拿捏的死死的。。
- 豆瓣9.1分!我昨天在挂急诊时啃完了这本书!
任何一个人,单靠 Git 就可以封神,而 Linus 还是 Linux 内核的开发者,这简直就是神的最高境界。
今天这篇算是 Git 的番外篇,给大家介绍一个牛逼的命令——git sparse-checkout,帮我的云服务器剩下了至少一半的存储空间。
一、使用 Git 中遇到的一个大麻烦
首先给大家通报一下,一天前上线的《Java 程序员进阶之路》网站,目前访问次数已经突破 1000 了。

正所谓不积跬步无以至千里,不积小流无以成江海。
1000 次也许不值一提,但 1000 万也不过是 1 万个 1000,二哥取得的每一点点进步,都要感谢大家的倾力捧场。
看过上一篇搭建过程的小伙伴应该都知道了,我是通过在云服务器上 clone 了一份 GitHub 上的远程仓库,然后通过宝塔面板的定时任务执行 git pull 命令从 GitHub 上拉取到最新的内容,再通过 Nginx 服务器搭建的网站,网站内容是通过 docsify 渲染 md 文件得到的。
直接 git pull 会无脑把 GitHub 上的 codes、images 目录同步到云服务器上,但其实 codes、images 目录是不需要同步的。
具体是怎么一回事呢?
大家可以先看一下我这个 GitHub 仓库的目录结构哈。

- docs 是文档目录,里面是 md 文件,所有的教程原稿都在这里。
- codes 是代码目录,里面是教程的配套源码。
- images 是图片目录,里面是教程的配套手绘图。
这样就可以利用 GitHub 来做免费的图床,并且还可以白票 jsDelivr CDN 的全球加速,简直不要太爽!

比如说 images 目录下有一张 logo 图 logo-01.png:

如果使用 GitHub 仓库的原始路径来访问的话,速度贼慢!
https://github.com/itwanger/toBeBetterJavaer/tree/master/images/logo-01.png
使用 jsDelivr 加速后就不一样了,速度飞起!
https://cdn.jsdelivr.net/gh/itwanger/toBeBetterJavaer/images/logo-01.png
简单总结下 GitHub 作为图床的正确用法,就两条:
- 创建一个 GitHub 仓库作为图床仓库,上传提交图片到仓库中
- 在要使用 GitHub 图床图片的地方将链接换为
https://cdn.jsdelivr.net/gh/{user}/{repo}/图片路径
付费七牛云或者阿里云图床的小伙伴不妨试试这种方式,能白票咱绝不花一分冤枉钱。
那也就是说,《Java 程序员进阶之路》网站上的图片都是通过 GitHub 图床加载的,不需要将图片从 GitHub 仓库拉取到云服务器上。要知道,一台云服务器的空间是极其昂贵的,能省的空间咱必须得省。
二、学习 Git 中遇到的一个大惊喜
于是我今天早上就在琢磨着,怎么样才能把这昂贵的空间省下来呢?
我百度了很多帖子,绝大多数都乱七八糟,毫无价值,能说到点子上的几乎没有。
最后还是浏览 Git 官方手册(也可以看Pro Git)才找到了一个牛逼的命令:git sparse-checkout,它可以帮助我们在拉取远程仓库的时候只同步那些我们想要的目录和文件。

具体怎么用,可以看官方文档:
https://git-scm.com/docs/git-sparse-checkout
但没必要,hhhh,我们直接实战。
第一步,通过 git remote add -f orgin git@github.com:itwanger/toBeBetterJavaer.git 命令从 GitHub 上拉取仓库。

第二步,启用 sparse-checkout,并初始化
拉取到仓库后,执行 git config core.sparseCheckout true 命令启用 sparse-checkout。
然后再执行 git sparse-checkout init 初始化。

第三步,使用 sparse-checkout 来拉取我们想要的仓库目录

比如说,我们只想拉取 docs 目录,可以执行 git sparse-checkout set docs 命令。

如果是第一次使用 sparse-checkout 的话,还需要执行一下 git pull orgin master 命令拉取一次。

第四步,验证是否生效
可以执行 ls -al 命令来确认 sparse-checkout 是否生效。

如图所示,确实只拉取到了 docs 目录。
假如还想要拉取其他文件或者目录的话,可以通过 git sparse-checkout add 命令来添加。

这就实现了,远程仓库和云服务器仓库之间的定制化同步,需要什么目录和文件就同步什么目录和文件,不需要的可以统统不要。
GitHub 仓库可以免费用,空间也无限大,但云服务可是要抠抠搜搜的用,毕竟扩充存储空间是真的贵!
我对比了一下,远程仓库大概 145 M,图片就占了 72 M,妥妥地省下了一半的存储空间。

如何禁用 git sparse-checkout 呢?
也简单,只需要执行一下 git sparse-checkout disable 命令就可以了。

可以看到,那些我们不想要的目录和文件统统都又回来了。
如果重新启用呢?
也简单,只需要执行一下 git sparse-checkout reapply 命令就可以了。

简单总结下:如果你要把一个庞大到撑满你硬盘的远程仓库拉取到本地,而你只需要其中的一部分目录和文件,那就可以试一试
git sparse-checkout 了。
三、使用 Git 后的一点心里话
不得不说,Git 实在是太强大了。就一行命令,解决了困扰我一天的烦恼,我的 80G 存储空间的云服务器又可以再战 3 年了,从此以后再也不用担心了。

Git 是真的牛逼,Linus 是真的牛逼,神不愧是神!
大家好,我是假期肝疼的二哥呀!
昨天的文章发出来后,好朋友 G 哥留言说:“二哥也不出去嗨皮下?”言下之意就是二哥实在是太肝了,连元旦都不放过,实在是太无情了。

主要是好不容易有了一段连贯的时间,有好多事情想要去做。比如说录视频,这次换了一种风格,尝试加入了 BGM,尝试找了很多素材去丰富视频的画面。

计算机专业的学生党可以通过下面的链接围观下,看看这个寒假该如何刷刷题。如果觉得视频有帮助的话,不妨三连支持下,让二哥的 B 站在 2022 年能小有起色,抱拳了。所谓星星之火,就靠你们去点燃了。
视频地址:https://www.bilibili.com/video/BV1vq4y127Ne/
明天就是 2022 年的又一个工作日了,希望工作党的各位都能百尺竿头更进一步!

没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。
一条 Git 命令减少了一般存储空间,我的服务器在偷着笑的更多相关文章
- 每日一条 Git 命令:git merge remote master
每日一条 Git 命令:git merge remote master 当远程的分支更新后,需要将自己的代码与远程的分支合并就用以下这个命令合并. git merge remote master 如果 ...
- 每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1
每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1 -b 12.0:分支 12.0 --depth 1:depth 克隆深度,1 为最 ...
- 利用github和git命令,将本地项目共享到服务器上——第二章
附上关于git命令的第一章:https://www.cnblogs.com/mlw1814011067/p/9908856.html 六.删除服务器中的文件 1. 直接物理删除(右键,删除,或者是用b ...
- 利用github和git命令,将本地项目共享到服务器上
一.步骤 1. 创建项目根目录 mkdir 文件夹名 2. 初始化文件夹 git init 3. 配置用户名和邮箱(第一次配置后,不需要再登录) git config user.name 名字 git ...
- git命令使用方法
git安装包 http://c35.yunpan.360.cn/my/?sid=#%2F%E5%AE%89%E8%A3%85%E5%8C%85%2FGit%E5%AE%89%E8%A3%85%2F g ...
- 2015继续任性——不会Git命令,照样玩转Git
最近事情比较多,一眨眼,已经半个月没有写博客了~不得不感慨光阴似箭啊!当然,2015年有很多让我们期待的事情,比如win10正式版..NET开源.VS2015等等.想想都让人兴奋啊~~ 为了迎接VS2 ...
- 10个很有用的高级Git命令
迄今,我已经使用Git很长一段时间了,考虑分享一些不管你是团队开发还是个人项目,都受用的高级git命令. 1. 输出最后一次提交的改变 这个命令,我经常使用它 来发送其他没有使用git的人来检查或者集 ...
- 很有用的高级 Git 命令
10 个很有用的高级 Git 命令 迄今,我已经使用Git很长一段时间了,考虑分享一些不管你是团队开发还是个人项目,都受用的高级git命令. 1. 输出最后一次提交的改变 这个命令,我经常使用它 来发 ...
- 10 个很有用的高级 Git 命令(转)
英文原文:10 Useful Advanced Git Commands 迄今,我已经使用Git很长一段时间了,考虑分享一些不管你是团队开发还是个人项目,都受用的高级git命令. 1. 输出最后一次提 ...
随机推荐
- Oracle 函数高级查询
目录 oracle高级查询 Oracle SQL获取每个分组中日期最新的一条数据 求平均值(为0的参数不均摊) 字符串清除前面的0 判断字符串串是否包含某个字符串 switch 判断 oracle不足 ...
- 端云协同,打造更易用的AI计算平台
内容来源:华为开发者大会2021 HMS Core 6 AI技术论坛,主题演讲<端云协同,HUAWEI HiAI Foundation打造更易用的AI计算平台>. 演讲嘉宾:华为海思AI技 ...
- 遇到奇葩的现象,给input的id为10的value属性赋值为6,但是怎么显示的时候值还是原先的9的
遇到奇葩的现象,给input的id为10的value属性赋值为6,但是怎么显示的时候值还是原先的9的 后来发现原来是id标签重复了,所有以后得注意了. 人员信息input的id属性与隐藏input属性 ...
- JAVA验证手机号码是否正确
PhoneUtils.java package com.common.util; import java.util.regex.Matcher; import java.util.regex.Patt ...
- 【LeetCode】72. Edit Distance 编辑距离(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 记忆化搜索 动态规划 日期 题目地址:http ...
- 【剑指Offer】52. 两个链表的第一个公共节点 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 方法一:栈 方法二:HashSet 方法三:不使用额外空间 日期 ...
- B. Recover the String
B. Recover the String time limit per test 1 second memory limit per test 256 megabytes input standar ...
- Docker&K8S学习笔记(一)—— Docker安装
最近一年在工作上经常使用Docker与K8S,除了利用其打镜像,部署服务外,还基于Docker与K8S开发了一套CICD流水线平台,为了加深相关知识点的理解,所以从今天开始会定期更新学习笔记,本套学习 ...
- 【Java例题】5.4 排序集合的使用
4.排序集合的使用.使用TreeSet模拟一个一维整数数组.其中,一维整数数组元素由Random类随机产生.最后显示排序后的结果. package chapter6; import java.util ...
- Intriguing Properties of Contrastive Losses
目录 概 主要内容 广义对比损失 不同的先验 不同的权重比 Feature Suppression DigitOnImageNet dataset RandBit dataset 代码 [Chen T ...