一條 Git 命令減少了一般存儲空間,我的服務器在偷着笑

元旦不是搭建了一個《Java 程序員進階之路》的網站嘛,其中用到了 Git 來作爲雲服務器和 GitHub 遠程倉庫之間的同步工具。

作爲開發者,相信大家都知道 Git 的重要性。Git 是一個分佈式版本控制軟件,初版由 Linus·Torvalds 開發,並於 2005 年以 GPL 許可協議發佈。

YYDS
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 [email protected]: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 年的又一個工作日了,希望工作黨的各位都能百尺竿頭更進一步!


沒有什麼使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧靜的港灣,我是不繫之舟

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章