อัปเดต: 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' เล็กน้อยมีไว้สำหรับคนที่รู้ว่ากำลังทำอะไรอยู่และต้องการให้คอมไพล์เพียงวางวัตถุที่ไม่สามารถเข้าถึงได้