ข้ามไปยังเนื้อหา
กลับหน้ารายการบทความ

Git LFS จัดการไฟล์ Binary ขนาดใหญ่

Git LFS เก็บ pointer ใน Git และย้ายเนื้อหาไฟล์ขนาดใหญ่ไปยังที่เก็บ LFS อธิบายหลักการใช้งาน กรณีที่เหมาะ และข้อควรระวังจากเอกสารทางการ

Git LFS จัดการไฟล์ Binary ขนาดใหญ่

Git LFS เก็บ pointer ใน Git และย้ายเนื้อหาไฟล์ขนาดใหญ่ไปยังที่เก็บ LFS เหมาะกับภาพ โมเดล หรือ asset ที่เปลี่ยนบ่อยและทำให้ repository โตเร็ว บทความนี้สรุปแนวคิดจากเอกสารทางการของ Git และจุดที่ควรตรวจเมื่อนำไปใช้จริง

ภาพรวม

Git บันทึกประวัติเป็น commit และแยกงานด้วย reference เช่น branch คำสั่งต่าง ๆ อาจเปลี่ยนไฟล์ทำงาน index หรือประวัติ จึงควรตรวจผลก่อนใช้กับงานร่วมกัน

หัวข้อนี้ตอบโจทย์เฉพาะเรื่อง: Git LFS เก็บ pointer ใน Git และย้ายเนื้อหาไฟล์ขนาดใหญ่ไปยังที่เก็บ LFS จึงควรเริ่มจากปัญหาที่ต้องแก้และผลลัพธ์ที่คาดหวัง ไม่ใช่เพียงเปิดฟีเจอร์เพราะมีอยู่ในเครื่องมือ

หลักการทำงาน

filter ของ LFS ทำให้ checkout และ push ดึงหรือส่งเนื้อหาไฟล์ตาม pointer

ให้ตรวจทั้งสถานะที่เครื่องมือรายงานและผลลัพธ์ปลายทางที่ผู้ใช้หรือระบบอื่นได้รับ หากสองส่วนไม่ตรงกัน ควรกลับไปตรวจค่าตั้งต้นและขอบเขตที่ฟีเจอร์นี้รับผิดชอบก่อนเปลี่ยนค่าเพิ่มเติม

เหมาะกับงานแบบไหน

เหมาะกับภาพ โมเดล หรือ asset ที่เปลี่ยนบ่อยและทำให้ repository โตเร็ว

ก่อนทดลอง ให้ระบุสิ่งที่จะใช้วัดผล เช่น เวลาตอบสนอง ความพร้อมใช้งาน ความถูกต้องของข้อมูล หรือภาระการดูแล แล้วเทียบกับสภาพเดิม วิธีนี้ช่วยให้รู้ว่าฟีเจอร์แก้ปัญหาจริงหรือย้ายภาระไปอีกจุดหนึ่ง

ขั้นตอนนำไปใช้

  1. สร้าง branch หรือ worktree ทดสอบและบันทึก commit hash
  2. ดู git status และ git log ก่อนและหลังใช้คำสั่ง
  3. ตรวจ diff และรันทดสอบที่เกี่ยวข้องก่อนส่งงาน

เริ่มจากขอบเขตเล็กและเก็บผลทดสอบไว้กับการเปลี่ยนแปลง หากจะใช้ใน production ให้กำหนดผู้ติดตามผลและเงื่อนไขที่จะหยุดการขยายการใช้งาน

ข้อควรระวัง

ตรวจ quota และการรองรับ LFS ของเซิร์ฟเวอร์ก่อนย้ายไฟล์เดิม

แปลงข้อควรระวังนี้เป็นรายการตรวจในการทบทวนงาน เพราะปัญหาจากค่าตั้งต้นอาจไม่แสดงทันทีในสภาพแวดล้อมทดสอบ

สรุป

Git LFS เก็บ pointer ใน Git และย้ายเนื้อหาไฟล์ขนาดใหญ่ไปยังที่เก็บ LFS เหมาะกับภาพ โมเดล หรือ asset ที่เปลี่ยนบ่อยและทำให้ repository โตเร็ว ก่อนนำไปใช้กับงานหลัก ควรตรวจผลตามขั้นตอนข้างต้นและทบทวนข้อจำกัดของระบบที่มีอยู่

อ่านเพิ่มเติม: เอกสารทางการของ Git