我們都知道 GitHub 是碼農的大秘寶,在開發出下個獨角獸 AI 殺手應用上,如何挖掘眾人的智慧實屬重要。雖然大秘寶有眾多 Repositories 當我們想參考裡頭的秘笈絕學時,一開始不免使用 git clone 指令,把整個 repository 都拷貝到自己電腦上,時間一久,修煉的武功愈多,就越恨自己電腦的硬碟越小,而且有的時候,我們只想參考其中的一部分,但卻把整個 repository 都 git 回來,想想是不是有點蠢,浪費硬碟空間,也浪費下載時間,這時候如果服用大叔這帖 Git Sparse Checkout 包您有通體舒暢的感覺。

https://thelittleappsblogsbucket.s3.ap-northeast-1.amazonaws.com/sparseCheckout/sparse_checkout_cover.webp

sparse 翻譯為「稀疏的」之意,Git Sparse Checkout 大意上就是只 clone repository 中我們有興趣子目錄 (subdirectory) 如以下例子例如,我們想參考 connectedhomeiprepository

01_github_matter

位在 /src/darwin/ 子目錄下的東西

02_copy_subdir

打開 mac 的終端機 (terminal.app) ,鍵入如下

03_git_sparse_checkout_commands

第一步 => 我們先建個 matter 這資料夾,然後 git init ,把 remote git repository 加到我們 local 的 matter 中

第二步 => 設定我們要使用 sparse checkout,即 git config core.sparsecheckout true

第三步 => 把我們要 checkout 的子目錄,寫到 sparse checkout 的設定中,即 echo src/darwin >> .git/info/sparse-checkout

第四步 => 然後,就可以大膽的 git pull 把子目錄的東西抓回來了 git pull origin master

成果:

04_result_sparsecheckout

有了 sparse checkout ,離獨角獸之顛,好像又更邁進了一步,還不快快 donate 大叔一下。😘

參考

=> Subdirectory Checkouts with git sparse-checkout
=> https://stackoverflow.com/questions/600079/how-do-i-clone-a-subdirectory-only-of-a-git-repository

贊助我們

Buy Me A Coffee