前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >某芬兰小伙,竟靠一个分布式版本软件直接封神?

某芬兰小伙,竟靠一个分布式版本软件直接封神?

作者头像
沉默王二
发布2022-01-28 19:57:34
3510
发布2022-01-28 19:57:34
举报
文章被收录于专栏:沉默王二沉默王二

前天不是搭建了一个《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 哥留言说:“二哥也不出去嗨皮下?”言下之意就是二哥实在是太肝了,连元旦都不放过,实在是太无情了。

好了,废话就不多说了。

明天就是 2022 年的第一个工作日了,希望工作党的各位都能百尺竿头更进一步!


没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 沉默王二 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、使用 Git 中遇到的一个大麻烦
  • 二、学习 Git 中遇到的一个大惊喜
  • 三、使用 Git 后的一点心里话
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档