git sparse-checkout — clone แค่บางโฟลเดอร์จาก monorepo
git sparse-checkout ให้ clone repository ขนาดใหญ่ได้โดยดึงเฉพาะโฟลเดอร์ที่ต้องการ — ลด disk space และ clone time ในกรณี monorepo ที่มีหลาย package
# clone โดยไม่ดึงไฟล์ (bare checkout)
git clone --no-checkout --filter=blob:none https://github.com/org/monorepo.git
cd monorepo
# กำหนดว่าจะเอาโฟลเดอร์ไหน
git sparse-checkout init --cone
git sparse-checkout set packages/ui packages/shared
# ดึงไฟล์จาก pattern ที่กำหนด
git checkout main
เพิ่ม/ลด path ทีหลัง:
git sparse-checkout add packages/api # เพิ่ม package ใหม่
git sparse-checkout list # ดู paths ที่ active อยู่
ดู pattern ที่ตั้งไว้:
cat .git/info/sparse-checkout
--filter=blob:none (partial clone) แยกจาก sparse-checkout แต่ทำงานร่วมกัน — blob:none ดึงเฉพาะ commit history ไม่ดึง file content ล่วงหน้า ช่วยลด bandwidth ได้อีกชั้น