使用 git clone 遠端儲存庫,當儲存庫過大而你不需要全部資料的時候可以使用以下指令。
|
|
也可以設定 --filter=blob:limit=1m
限制檔案大小為 1MB
Sparse Checkout
組合拳就是 git clone --filter=blob:none --depth=1 --no-checkout --sparse
,這個指令會先不切換到分支,所以工作目錄會是空的。下一步就是取出需要的檔案,使用錐形模式,只取出 data
src
資料夾內容:
|
|
或者寫入黑名單到 sparse-checkout 中:
|
|
這會下載所有檔案 /*
並且忽略 exampleSite/
images/
assets/img
*.png
。
如果需要完整儲存庫可以用 git sparse-checkout disable
恢復一般 checkout 模式。
什麼是 cone 模式?
- 只檢視資料夾目錄,不會一一檢查所有文件,圖片畫起來就像是個圓錐。
- 使用
sparse-checkout
時,沒有用 cone 會比較慢,因為他會遍歷所有文件 - cone 模式每次設定都會覆蓋之前的規則,非 cone 模式則是累加規則。
同場加映:清理 git 儲存庫
git clean -f
刪除未追蹤文件:
|
|
git gc --prune=now --aggressive
清理快取:
|
|
待續
使用 git-filter-repo 套件有更多功能。
參考資料
https://docs.gitlab.com/ee/topics/git/clone.html https://docs.gitlab.com/ee/user/project/repository/reducing_the_repo_size_using_git.html https://ryanagibson.com/posts/shrink-git-repo https://blog.miniasp.com/post/2022/05/17/Down-size-your-Monorepo-with-Git-Sparse-checkouts