วิธีใช้ 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

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

วิธีตั้งค่า Sandboxed Python Environment ด้วย pyenv‑virtualenv บน Windows เพื่อความปลอดภัยGrowth
21 สิงหาคม 2569 เวลา 18:30

วิธีตั้งค่า Sandboxed Python Environment ด้วย pyenv‑virtualenv บน Windows เพื่อความปลอดภัย

การสร้างสภาพแวดล้อม Python ที่ทำงานแบบ sandboxed ช่วยให้คุณรันโค้ดจากแหล่งที่ไม่เชื่อถือได้โดยไม่เสี่ยงต่อระบบหลักของ Windows ​คอมพิวเตอร์ ​บทความนี้จะแนะนำวิธีตั้งค่า **pyenv‑virtualenv** บน Windows…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีตั้งค่า Git Hook เพื่อตรวจสอบคุณภาพโค้ดก่อน Commit อย่างปลอดภัยGrowth
21 สิงหาคม 2569 เวลา 12:30

วิธีตั้งค่า Git Hook เพื่อตรวจสอบคุณภาพโค้ดก่อน Commit อย่างปลอดภัย

Git Hook คือสคริปต์ที่ทำงานอัตโนมัติเมื่อเกิดเหตุการณ์บางอย่างในระบบเวอร์ชันคอนโทรล เช่น `pre‑commit` หรือ `post‑merge` การใช้ Hook ช่วยให้เราตรวจสอบคุณภาพโค้ดก่อนที่การเปลี่ยนแปลงจะถูกบันทึกเข้าสู่ r…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีตั้งค่า Windows Terminal พร้อมโปรไฟล์ PowerShell เพื่อเพิ่มประสิทธิภาพการทำงานGrowth
21 สิงหาคม 2569 เวลา 11:00

วิธีตั้งค่า Windows Terminal พร้อมโปรไฟล์ PowerShell เพื่อเพิ่มประสิทธิภาพการทำงาน

การใช้ Windows Terminal ร่วมกับ PowerShell เป็นวิธีที่ทำให้การทำงานบนคอมพิวเตอร์เร็วขึ้นและเป็นระเบียบมากยิ่งขึ้น บทความนี้จะแนะนำขั้นตอนตั้งค่าโปรไฟล์ PowerShell อย่างละเอียด เพื่อเพิ่มประสิทธิภาพในก…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีเชื่อมต่อ Google Cloud BigQuery กับ Power BI โดยใช้ Direct Query อย่างปลอดภัยGrowth
20 สิงหาคม 2569 เวลา 18:30

วิธีเชื่อมต่อ Google Cloud BigQuery กับ Power BI โดยใช้ Direct Query อย่างปลอดภัย

การเชื่อมต่อ Google Cloud BigQuery กับ Power BI ด้วยโหมด **Direct Query** ช่วยให้ผู้ใช้สามารถดึงข้อมูลสดจากคลังข้อมูลขนาดใหญ่ได้โดยไม่ต้องทำการนำเข้าข้อมูลลงเครื่องมือ BI อีกครั้ง ทำให้งานรายงานเป็นแบ…

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