ข้ามไปเนื้อหาหลัก

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 ได้อีกชั้น