
ที่มาภาพ: Unknown Source
วิธีใช้ Git Sparse Checkout เพื่อโคลนเฉพาะไฟล์ที่ต้องการอย่างมีประสิทธิภาพ
⚡ สรุป 30 วิ
Sparse checkout เป็นฟีเจอร์ของ Git ที่ให้คุณเลือกดึงเฉพาะไฟล์หรือโฟลเดอร์ที่ต้องการจากรีโพโดยไม่ต้องคัดลอกทั้งหมด ช่วยลดเวลาและพื้นที่จัดเก็บอย่างมีนัยสำคัญ
ทำความเข้าใจ Sparse Checkout — Overview
Sparse checkout เป็นฟีเจอร์ของ Git ที่ให้คุณเลือกดึงเฉพาะไฟล์หรือโฟลเดอร์ที่ต้องการจากรีโพโดยไม่ต้องคัดลอกทั้งหมด ช่วยลดเวลาและพื้นที่จัดเก็บอย่างมีนัยสำคัญ
- ทำงานบนระดับ index ทำให้ Git รู้ว่าไฟล์ใดควรอยู่ใน working tree
- เหมาะกับโปรเจกต์ขนาดใหญ่ที่คุณใช้แค่ส่วนย่อยของโค้ดเท่านั้น
- รองรับทั้งการตั้งค่าแบบ global และ per‑repository
เตรียมสภาพแวดล้อม Git — Setup
ก่อนเริ่มใช้งานต้องตรวจสอบว่า Git เวอร์ชันใหม่รองรับ sparse checkout (เวอร์ชั่น 2.25 ขึ้นไป) และตั้งค่าบางอย่างให้พร้อม
- ตรวจสอบเวอร์ชัน `git --version`
- เปิดการทำงานของ core.sparseCheckout: `git config core.sparseCheckout true`
- หากต้องการใช้แบบถาวรให้เพิ่ม `--global` เข้าไปในคำสั่งข้างต้น
วิธีเปิดใช้งาน Sparse Checkout — Enable Sparse Checkout
ขั้นตอนต่อไปเป็นการเตรียม repository ให้รองรับ sparse checkout
- **ขั้นตอนที่ 1: สร้าง clone ปกติโดยใช้ `--no-checkout` เพื่อไม่ให้ Git ดึงไฟล์ทั้งหมดลงมา
- **ขั้นตอนที่ 2: เข้าไปในโฟลเดอร์ของ repo แล้วเปิดการทำงานด้วย `git config core.sparseCheckout true`
- **ขั้นตอนที่ 3: สร้างหรือแก้ไขไฟล์ `.git/info/sparse-checkout` เพื่อกำหนด pattern ของไฟล์/โฟลเดอร์ที่ต้องการ
กำหนดไฟล์หรือโฟลเดอร์ที่ต้องการ — Define Paths
ไฟล์ `sparse‑checkout` ใช้รูปแบบ glob pattern เช่นเดียวกับ .gitignore คุณสามารถระบุหลายบรรทัดเพื่อรวมหลายตำแหน่งได้
- ใส่เส้นทางสัมพัทธ์จาก root ของ repo (เช่น `src/`, `docs/*.md`)
- ใช้เครื่องหมาย `!` เพื่อยกเว้นไฟล์หรือโฟลเดอร์ที่ตรงกับ pattern ก่อนหน้า
- บันทึกแล้วรัน `git checkout <branch>` Git จะโหลดเฉพาะสิ่งที่กำหนดไว้
ตัวอย่างเชิงปฏิบัติ — Example
สมมติว่าต้องการทำงานเพียงส่วนของ front‑end ในโปรเจกต์ใหญ่
- สร้าง clone แบบไม่มีไฟล์: `git clone --no-checkout https://github.com/example/large-repo.git`
- เข้าโฟลเดอร์: `cd large-repo`
- เปิด sparse checkout: `git config core.sparseCheckout true`
- แก้ไขไฟล์ `.git/info/sparse-checkout` ใส่บรรทัดต่อไปนี้
``` frontend/ README.md !frontend/tests/ ```
- ดึงข้อมูลที่ต้องการ: `git checkout main`
ตอนนี้โฟลเดอร์ `frontend/` พร้อมไฟล์ทั้งหมด ยกเว้นโฟลเดอร์ `tests/` จะไม่ถูกโหลดลงมา
**Tip: ใช้ pattern แบบ `/node_modules/` เพื่อยกเว้นไดเรกทอรีที่ซ้ำหลายระดับได้อย่างรวดเร็ว
เปรียบเทียบกับวิธีดึงเต็ม Repo — Comparison
| ด้าน | Clone ปกติ | Sparse Checkout |
|---|---|---|
| เวลาในการดาวน์โหลด | สูง (ดาวน์โหลดทุกไฟล์) | ต่ำ (ดาวน์โหลดเฉพาะที่กำหนด) |
| พื้นที่จัดเก็บ | มาก (เต็ม repo) | น้อย (ตาม pattern) |
| ความซับซ้อนของการตั้งค่า | ต่ำ | ปานกลาง (ต้องแก้ไขไฟล์ config) |
| การอัพเดตต่อเนื่อง | ง่าย | ต้องทำ `git pull` แล้วตรวจสอบ pattern อีกครั้ง |
ข้อควรระวังและ Best Practices — Tips & Caveats
- อย่าใส่ pattern ที่กว้างเกินไป เพราะจะยกเลิกประโยชน์ของการลดขนาด
- หากต้องเปลี่ยน pattern ให้แก้ไฟล์ `sparse-checkout` แล้วทำ `git read-tree -mu HEAD` เพื่ออัปเดต working tree ทันที
- ใช้กับ branch ที่ไม่ซับซ้อนเกินไป (เช่น ไม่ได้มี submodule เยอะ) จะทำให้การจัดการง่ายกว่า
- เก็บไฟล์ `sparse-checkout` ไว้ใน version control ของทีมเพื่อให้ทุกคนใช้ pattern เดียวกัน
สรุป — Summary
- Sparse checkout ช่วยโคลนเฉพาะส่วนที่ต้องการ ลดเวลาและพื้นที่เก็บข้อมูลอย่างมีประสิทธิภาพ
- ขั้นตอนหลักคือเปิด `core.sparseCheckout` แล้วกำหนด pattern ในไฟล์ `.git/info/sparse-checkout`
- ควรตรวจสอบเวอร์ชัน Git, ตั้งค่าให้ถูกต้อง และใช้ pattern อย่างระมัดระวังเพื่อหลีกเลี่ยงการดึงข้อมูลที่ไม่จำเป็น
สิ่งที่ควรจำ
- เปิดฟีเจอร์ด้วย `git config core.sparseCheckout true`
- กำหนดเส้นทางในไฟล์ `sparse-checkout` โดยใช้ glob pattern
- ใช้ `git checkout <branch>` หรือ `git read-tree -mu HEAD` เพื่อให้ Git ดึงเฉพาะสิ่งที่ระบุ
- ตรวจสอบและปรับปรุง pattern อย่างสม่ำเสมอเพื่อคงประสิทธิภาพสูงสุด
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีใช้ Git Sparse Checkout เพื่อโคลนเฉพาะไฟล์ที่ต้องการอย่างมีประสิทธิภาพ
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 3 สิงหาคม 2569 เวลา 17:50



