元旦不是搭建了一个《Java 程序员进阶之路》的网站嘛,其中用到了 Git 来作为云服务器和 GitHub 远程仓库之间的同步工具。


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


YYDS

Git 的牛逼这次就不吹了,毕竟已经吹了 7 篇了,实在是吹不动了!

任何一个人,单靠 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 命令减少了一般存储空间,我的服务器在偷着笑的更多相关文章

  1. 每日一条 Git 命令:git merge remote master

    每日一条 Git 命令:git merge remote master 当远程的分支更新后,需要将自己的代码与远程的分支合并就用以下这个命令合并. git merge remote master 如果 ...

  2. 每日一条 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 为最 ...

  3. 利用github和git命令,将本地项目共享到服务器上——第二章

    附上关于git命令的第一章:https://www.cnblogs.com/mlw1814011067/p/9908856.html 六.删除服务器中的文件 1. 直接物理删除(右键,删除,或者是用b ...

  4. 利用github和git命令,将本地项目共享到服务器上

    一.步骤 1. 创建项目根目录 mkdir 文件夹名 2. 初始化文件夹 git init 3. 配置用户名和邮箱(第一次配置后,不需要再登录) git config user.name 名字 git ...

  5. 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 ...

  6. 2015继续任性——不会Git命令,照样玩转Git

    最近事情比较多,一眨眼,已经半个月没有写博客了~不得不感慨光阴似箭啊!当然,2015年有很多让我们期待的事情,比如win10正式版..NET开源.VS2015等等.想想都让人兴奋啊~~ 为了迎接VS2 ...

  7. 10个很有用的高级Git命令

    迄今,我已经使用Git很长一段时间了,考虑分享一些不管你是团队开发还是个人项目,都受用的高级git命令. 1. 输出最后一次提交的改变 这个命令,我经常使用它 来发送其他没有使用git的人来检查或者集 ...

  8. 很有用的高级 Git 命令

    10 个很有用的高级 Git 命令 迄今,我已经使用Git很长一段时间了,考虑分享一些不管你是团队开发还是个人项目,都受用的高级git命令. 1. 输出最后一次提交的改变 这个命令,我经常使用它 来发 ...

  9. 10 个很有用的高级 Git 命令(转)

    英文原文:10 Useful Advanced Git Commands 迄今,我已经使用Git很长一段时间了,考虑分享一些不管你是团队开发还是个人项目,都受用的高级git命令. 1. 输出最后一次提 ...

随机推荐

  1. CF151B Phone Numbers 题解

    Content 在一座城市中,每个人的电话号码都是由六位整数组成的,例如 11-45-14. 现在有 \(n\) 个人,第 \(i\) 个人有 \(s_i\) 个人的电话号码.已知: 出租车司机的电话 ...

  2. 前端文本框插件KindEditor

    KindEditor   1.进入官网 2.下载 官网下载:http://kindeditor.net/down.php 本地下载:http://files.cnblogs.com/files/wup ...

  3. [COCI2018-2019#2] Sunčanje 题解

    link 考虑简洁的 \(\text{cdq}\) 做法. 约定:第 \(i\) 个矩形左下角为 \((xl_i,yl_i)\),右上角为 \((xr_i,yr_i)\),所有坐标都已离散化. 如果 ...

  4. SpringBoot项目bootstrap.yml配置文件不加载

    bootstrap.yml需要引入springcloud的包才会加载 <dependency> <groupId>org.springframework.cloud</g ...

  5. JAVA中Base64和byte数组(byte[]) 相互转换

    Base64转byte[] byte[] bytes = DatatypeConverter.parseBase64Binary("base64字符串"); byte[]转base ...

  6. JAVA微信支付——企业付款(企业向微信用户个人付款、转账)

    本地开发环境支付回调调试方法可以参考:https://www.cnblogs.com/pxblog/p/11623053.html 需要自行引入相关依赖 官方文档地址:https://pay.weix ...

  7. 【LeetCode】760. Find Anagram Mappings 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...

  8. 【LeetCode】1023. Binary String With Substrings Representing 1 To N 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  9. treecnt 算法马拉松20(告别美国大选及卡斯特罗)

    treecnt 基准时间限制:1 秒 空间限制:131072 KB 给定一棵n个节点的树,从1到n标号.选择k个点,你需要选择一些边使得这k个点通过选择的边联通,目标是使得选择的边数最少. 现需要计算 ...

  10. The Best Path

    The Best Path Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...