วิธีใช้ Git Sparse Checkout เพื่อโคลนเฉพาะไฟล์ที่ต้องการอย่างมีประสิทธิภาพ

ที่มาภาพ: 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

Related

บทความที่เกี่ยวข้อง

วิธีตั้งค่า Cloudflare Tunnel (Argo Tunnel) สร้าง VPN แบบ Zero‑Trust บน Linux อย่างปลอดภัยGrowth
3 สิงหาคม 2569 เวลา 19:00

วิธีตั้งค่า Cloudflare Tunnel (Argo Tunnel) สร้าง VPN แบบ Zero‑Trust บน Linux อย่างปลอดภัย

Cloudflare Tunnel (หรือ Argo Tunnel) ช่วยให้เราสร้างการเชื่อมต่อแบบ **VPN Zero‑Trust** บน Linux โดยไม่ต้องเปิดพอร์ตสาธารณะบนไฟร์วอลล์ การใช้ Tunnel ทำให้ทราฟฟิกทั้งหมดผ่านเครือข่ายของ Cloudflare ซึ่งม…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีตั้งค่า Snyk เพื่อตรวจสอบช่องโหว่ของ Dependencies อัตโนมัติใน GitHub Actions อย่างปลอดภัยGrowth
3 สิงหาคม 2569 เวลา 11:30

วิธีตั้งค่า Snyk เพื่อตรวจสอบช่องโหว่ของ Dependencies อัตโนมัติใน GitHub Actions อย่างปลอดภัย

Snyk เป็นเครื่องมือสแกนช่องโหว่ของ dependencies ที่ทำงานอัตโนมัติบน GitHub Actions ช่วยให้ทีมพัฒนาเห็นและจัดการความเสี่ยงได้ทันที บทความนี้จะอธิบายขั้นตอนตั้งค่า Snyก เพื่อสแกนอัตโนมัติในทุก push หรือ…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ6 นาที
วิธีตั้งค่า GitLab CI/CD พร้อม Kubernetes สำหรับ Deployment Blue‑Green อย่างปลอดภัยGrowth
2 สิงหาคม 2569 เวลา 20:30

วิธีตั้งค่า GitLab CI/CD พร้อม Kubernetes สำหรับ Deployment Blue‑Green อย่างปลอดภัย

การทำ Deployment แบบ Blue‑Green บน Kubernetes ด้วย GitLab CI/CD ช่วยให้เราปล่อยฟีเจอร์ใหม่ได้โดยไม่มีเวลาหยุดทำงานของระบบ (**Zero‑Downtime**) และลดความเสี่ยงจากข้อผิดพลาดที่อาจเกิดขึ้นในขั้นตอนปล่อยเว…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ9 นาที
วิธีเปิดใช้งาน GitHub Advanced Security เพื่อสแกนหาช่องโหว่ในโค้ดอัตโนมัติบนรีโพซิทอรีอย่างปลอดภัยGrowth
2 สิงหาคม 2569 เวลา 19:00

วิธีเปิดใช้งาน GitHub Advanced Security เพื่อสแกนหาช่องโหว่ในโค้ดอัตโนมัติบนรีโพซิทอรีอย่างปลอดภัย

GitHub Advanced Security (GHAS) ให้คุณสแกนหาช่องโหว่ในโค้ดแบบอัตโนมัติโดยไม่ต้องออกจากแพลตฟอร์มเดิม การเปิดใช้งานที่ถูกต้องจะช่วยให้ทีมพัฒนาตรวจจับปัญหาได้เร็วและลดความเสี่ยงต่อการรั่วไหลของข้อมูล

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
คัดลอกลิงก์แล้ว!