我們都知道 GitHub 是碼農的大秘寶,在開發出下個獨角獸 AI 殺手應用上,如何挖掘眾人的智慧實屬重要。雖然大秘寶有眾多 Repositories 當我們想參考裡頭的秘笈絕學時,一開始不免使用 git clone 指令,把整個 repository 都拷貝到自己電腦上,時間一久,修煉的武功愈多,就越恨自己電腦的硬碟越小,而且有的時候,我們只想參考其中的一部分,但卻把整個 repository 都 git 回來,想想是不是有點蠢,浪費硬碟空間,也浪費下載時間,這時候如果服用大叔這帖 Git Sparse Checkout 包您有通體舒暢的感覺。
sparse 翻譯為「稀疏的」之意,Git Sparse Checkout 大意上就是只 clone repository 中我們有興趣子目錄 (subdirectory) 如以下例子例如,我們想參考 connectedhomeip 這 repository 中
位在 /src/darwin/ 子目錄下的東西
打開 mac 的終端機 (terminal.app) ,鍵入如下
第一步 => 我們先建個 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
成果:
有了 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