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

ไม่ว่าจะเป็นความตั้งใจ หรือบังเอิญที่ต้องมีการใส่ไฟล์ประเภทภาพ เสียง หรือวิดีโอเข้าไปยัง git repository ถ้าไฟล์เหล่าไม่ได้มีจำนวนเยอะ มีการอัพเดตบ่อยๆ หรือมีขนาดใหญ่ ก็คงไม่ต้องซีเรียสอะไรมากปล่อยผ่านไปก็ได้ แต่ถ้าเกิดต้องมีการอัพเดตไฟล์อยู่บ่อยๆ ขนาดไฟล์ก็ใหญ่ขึ้นเรื่อยๆ อันนี้แหละเราจะต้องมาดูก่อนหน่อย เพราะมีผลกระทบที่เกิดขึ้นกับ git repository ของเราแน่ๆ ไม่ว่าจะเป็น git history ที่จะใหญ่ขึ้นตาม การ pull หรือ fetch ข้อมูลก็จะช้าขึ้นนั้นเอง

สำหรับวิธีการแก้ปัญหารการต้องอัพไฟล์ขนาดใหญ่เข้าไปใน git repository ของเราก็สามารถทำได้โดยใช้ Git LFS (Large File Storage) ซึ่งเป็น extension หนึ่งของ Git โดยหลักการทำงานของ Git LFS จะ hook event เมื่อมีการ push ไฟล์ไปยัง git repository และแทนที่ไฟล์จริงๆ ด้วย pointer ของไฟล์ ด้วยการอัพโหลดไปยัง Git LFS Store

วิธีใช้งาน

$ git lfs install
$ git lfs track "*.jpg"
*.png filter=lfs diff=lfs merge=lfs -text
$ git add .gitattributes *.jpg
$ git commit -m "track *.jpg files using Git LFS"

cmd3

$ git lfs ls-files

References