คำอธิบาย: ข้อความ “Not enough disk space to clone the repository” หมายถึงอะไร ทำไมที่เก็บโค้ดจึงโต และมีวิธีทำงานโดยไม่ต้องดาวน์โหลดทั้งหมดอย่างไร
งานมีแค่แก้ข้อความไม่กี่บรรทัด แต่เครื่องมือกลับแจ้งว่าไม่มีพื้นที่พอสำหรับคัดลอกที่เก็บโค้ด
นี่คือ ปัญหาพื้นที่จัดเก็บในสภาพแวดล้อมที่รับสำเนา ไม่ใช่ข้อผิดพลาดจากการทำงานของโปรแกรม และไม่ได้หมายความว่าไฟล์บน GitHub หายไป
ในกรณีหนึ่ง ขนาดที่ API ของ GitHub รายงานอยู่ที่ประมาณ 9 GB อยากได้ไขควงหนึ่งอัน แต่รถส่งของยกมาทั้งร้านเครื่องมือพร้อมชั้นวาง
ข้อความนี้ยืนยันอะไรได้บ้าง?
ยืนยันได้ว่าการคัดลอกติดปัญหาเรื่องพื้นที่ แต่ยังบอกไม่ได้ว่าเหลือพื้นที่จริงเท่าไร ดาวน์โหลดไปแล้วเท่าไร หรือไฟล์ปัจจุบันกับประวัติเก่าอะไรเป็นตัวการหลัก
ตัวเลขราว 9 GB เป็นขนาดที่ API รายงานแล้วปัดเป็นเลขกลม ไม่ใช่ขนาดสำเนาที่วัดจากเครื่องซึ่งเกิดปัญหา ข้อมูลที่ดาวน์โหลด ไฟล์ที่แตกออก และพื้นที่ชั่วคราวอาจมีขนาดต่างกัน
ทำไมที่เก็บโค้ดถึงใหญ่ขนาดนั้น?
Git เก็บประวัติการเปลี่ยนแปลงควบคู่กับไฟล์ปัจจุบัน ภาพขนาดใหญ่ ไฟล์สำรอง หรือผลลัพธ์ที่สร้างอัตโนมัติซึ่งเคยบันทึกไว้ อาจยังอยู่ในประวัติ อีกด้านหนึ่ง การเพิ่มบทความ คำแปล ภาพ และไฟล์ผลลัพธ์อย่างต่อเนื่องก็ทำให้ชุดไฟล์ปัจจุบันใหญ่ได้
จึงควรตรวจ ไฟล์ที่ใช้อยู่ตอนนี้และข้อมูลในประวัติ แยกกัน ก่อนระบุสาเหตุ
GitHub มีคำแนะนำให้รักษาขนาดที่เก็บโค้ดให้อยู่ในระดับจัดการง่าย รวมถึงแนะนำให้โฟลเดอร์ .git บนดิสก์มีขนาดไม่เกิน 10 GB นี่ไม่ใช่กฎที่สั่งห้าม clone อัตโนมัติเมื่อถึงตัวเลขนั้น และไม่ได้เป็นการวัดแบบเดียวกับค่าใน API เสมอไป
ไม่ต้องขนทั้งคลังเพื่อใช้ไฟล์เดียว
ถ้าสภาพแวดล้อมเดิมมีไฟล์ชั่วคราวสะสมมาก การเริ่มพื้นที่ทำงานใหม่อาจช่วยได้ แต่ถ้าต้นทางใหญ่จริง ปัญหาก็อาจเกิดซ้ำ
หากต้องการอ่านหรือแก้ไฟล์เดียว สามารถใช้ API ของ GitHub จัดการไฟล์นั้นโดยตรงเมื่อมีสิทธิ์เข้าถึง หากจำเป็นต้องใช้ Git ให้ลอง:
git clone --depth=1 --filter=blob:none --sparse REPOSITORY_URL
คำสั่งนี้ลดประวัติที่ดึงมา เลื่อนการดาวน์โหลดเนื้อหาไฟล์ และจำกัดไฟล์ที่แสดงตั้งแต่แรก แต่ไม่รับประกันว่าจะสำเร็จทุกกรณี และมีข้อจำกัดกับงานที่ต้องใช้ประวัติทั้งหมด
อย่าลบประวัติแบบหุนหัน
การลบหรือเขียนประวัติใหม่อาจกระทบสำเนาของผู้ร่วมงาน ลิงก์อ้างอิง และระบบอัตโนมัติ ตรวจพื้นที่ว่าง ไฟล์ใหญ่ปัจจุบัน และข้อมูลเก่าก่อน พร้อมสำรองข้อมูลหากจะทำการล้างที่ย้อนกลับไม่ได้ง่าย ๆ
สรุป
คำสั่งที่ต้องการคือ “แก้ไฟล์นี้” แต่แผนขนส่งกลับเป็น “ย้ายคลังขนาด 9 GB”
ถ้าจะหยิบไฟล์เดียว ทำไมต้องยกคลังมาทั้งหลัง? ลองเปลี่ยนวิธีขนข้อมูลก่อนเพิ่มขนาดดิสก์
แหล่งข้อมูล: คำแนะนำของ GitHub, ไฟล์ขนาดใหญ่, คู่มือ Git clone



