อัปเดต: git pruneจะ "แก้ไข" ปัญหาโดยจะลบวัตถุที่หลวมเหล่านั้นออก
(git gcเรียกgit pruneแต่เฉพาะสำหรับวัตถุหลวมที่มีอายุมากกว่าสองสัปดาห์โดยค่าเริ่มต้น)
อย่างไรก็ตามตามที่OP Michael Donohueกล่าวไว้ในความคิดเห็น:
ฉันชอบด้านความปลอดภัยในการเก็บสิ่งของที่หลวมไว้เป็นเวลาสองสัปดาห์ฉันควรย้อนกลับไปดูการแก้ไขเก่า ๆ บ้างดังนั้นฉันจึงไม่ชอบโซลูชันนี้มากนัก
ฉันไม่มีปัญหากับขนาดหรือประสิทธิภาพของคอมไพล์ แต่เป็นเพียง 'git gui' ที่ยืนยันว่าจะขอให้ฉันบีบอัดฐานข้อมูลแม้ว่าการบีบอัดฐานข้อมูลจะไม่มีผลใด ๆ
คำตอบเดิม:
มีรายงานปัญหา " git gc" การไม่นำวัตถุที่หลวมทั้งหมดออกก่อนหน้านี้ (ปลายปี 2008 " " git gc"ดูเหมือนจะไม่นำวัตถุที่หลวมอีกต่อไป "
git gc เอาเฉพาะวัตถุหลวม ๆ ที่เก่ากว่าสองสัปดาห์ถ้าคุณต้องการเอาออกตอนนี้ให้รัน git prune
แต่ตรวจสอบให้แน่ใจว่าไม่มีกระบวนการคอมไพล์อื่นใดที่สามารถทำงานได้เมื่อคุณเรียกใช้ไม่เช่นนั้นอาจเหยียบอะไรบางอย่าง
" git gc" จะแกะวัตถุที่ไม่สามารถเข้าถึงได้และอยู่ในแพ็ค
เป็นผลให้จำนวนเนื้อที่ดิสก์ที่ใช้โดยที่เก็บ git สามารถเพิ่มขึ้นอย่างมากหลังจาก a "git gcดำเนินการ "" ซึ่งอาจเป็นเรื่องที่น่าแปลกใจสำหรับคนที่ทำงานใกล้จนเต็มในระบบไฟล์ของพวกเขาลบสาขาจำนวนหนึ่งออกจากที่เก็บการติดตาม แล้วทำ " git gc" อาจได้รับความประหลาดใจอย่างมาก
[ตัวอย่าง: ]สาขาเก่าจองผ่านแท็กเช่นnext-20081204.
หากคุณอัปเดตสำเนาภายในของที่linux-nextเก็บทุกวันคุณจะสะสมแท็กสาขาเก่าเหล่านี้เป็นจำนวนมาก
หากคุณลบทั้งชุดและเรียกใช้git-gcการดำเนินการจะใช้เวลาสักครู่และจำนวนบล็อกและ inodes ที่ใช้จะเพิ่มขึ้นอย่างมาก
สิ่งเหล่านี้จะหายไปหลังจาก " git prune" แต่เมื่อฉันดำเนินการทำความสะอาดนี้ฉันมักต้องการ--yes-I-know-what-I-am-doing-and-it's-unsafe-but-just-drop-the-unreachable-objects-cause-this-is-just-a-tracking-repositoryตัวเลือกในการ "คอมไพล์ gc"
แล้วในกรณีของคุณ " git prune" จะเป็นประโยชน์ไหม
(อาจใช้ "now" ในgc.pruneexpireตัวแปร config ซึ่งจำเป็นเพื่อให้พฤติกรรมข้างต้นเกิดขึ้น)
คุณยังมี (จากหัวข้อเดียวกัน):
repack -a -d -l
สังเกตตัวพิมพ์เล็ก "a"
git-gcเรียกการบรรจุใหม่ด้วยตัวพิมพ์ใหญ่ 'A' ซึ่งเป็นสาเหตุที่ทำให้วัตถุที่ไม่สามารถเข้าถึงได้ถูกคลายออก 'a' เล็กน้อยมีไว้สำหรับคนที่รู้ว่ากำลังทำอะไรอยู่และต้องการให้คอมไพล์เพียงวางวัตถุที่ไม่สามารถเข้าถึงได้