Git Gui: ได้รับอย่างต่อเนื่อง "ปัจจุบันที่เก็บนี้มีวัตถุหลวม ๆ ประมาณ 320 ชิ้น"


90

ทุกครั้งที่เริ่ม Git Gui ในโครงการใดโครงการหนึ่งฉันจะได้รับข้อความนี้:

ปัจจุบันที่เก็บนี้มีวัตถุหลวมประมาณ 320 ชิ้น

ป้อนคำอธิบายภาพที่นี่

จากนั้นคลิกใช่และฉันได้รับข้อความนี้:

ป้อนคำอธิบายภาพที่นี่

สิ่งนี้คือเมื่อฉันเปิด Git Gui อีกครั้งฉันได้รับข้อความเดียวกันทั้งหมดอีกครั้งเกี่ยวกับวัตถุหลวม ๆ 320 ชิ้น! เหมือนกับว่าการคลิกใช่จะไม่มีผลเลย


คุณสามารถโพสต์ผลลัพธ์ของgit count-objects -v?
CB Bailey


5
@TheCodeArtist ขอบคุณฉันพบคำตอบที่นั่น การเรียกใช้git gcอย่างชัดเจนจากบรรทัดคำสั่งใช้ได้ผลสำหรับฉันตามความคิดเห็นนี้
sashoalm

คำตอบ:


82

เพียงแค่ข้ามป๊อปอัปดังที่วิธีการข้ามป๊อปอัป "Loose Object" เมื่อเรียกใช้ "git gui"ในคำตอบที่ได้รับการยอมรับจะมองข้ามความจริงที่ว่า Git กำลังสื่อสารปัญหาด้านประสิทธิภาพที่อาจเกิดขึ้นกับคุณ สิ่งนี้ควรแก้ไขได้โดยเรียกใช้คำสั่งนี้จากบรรทัดคำสั่ง:

cd path/to/your/git/repo
git gc --aggressive

จากผลลัพธ์ของgit help gc:

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

ผู้ใช้ควรรันภารกิจนี้เป็นประจำภายในแต่ละที่เก็บเพื่อรักษาการใช้พื้นที่ดิสก์ที่ดีและประสิทธิภาพการทำงานที่ดี

--ก้าวร้าว

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

สิ่งนี้จะป้องกันไม่ให้พรอมต์โผล่ขึ้นมาชั่วขณะ


19
สิ่งที่แปลกคือเพียงแค่เรียกใช้git gcจากบรรทัดคำสั่งแก้ไขให้ฉัน อาจจะgit guiวิ่งบ้างgit gc --extra-unaggressive:)
sashoalm

38
git pruneดูเหมือนจะแก้ไขได้เมื่อgit gcไม่ได้
Mahn

1
โดยทั่วไปคุณไม่ต้องการวิ่งด้วย--aggressive; ที่ทำให้gitคำนวณเดลต้าใหม่ซึ่งมักจะไม่ก่อให้เกิดผลและใช้เวลานานมาก ดูโพสต์นี้ - manเพจนี้ทำให้เข้าใจผิด อาจเป็นเพียงธรรมดาgit gcก็เพียงพอแล้วในกรณีนี้
Jeff Clites

16
ต้องใช้--prune=allเพื่อกำจัดข้อความ ทั้งgit gcในบรรทัดคำสั่งหรือตัวเลือก--aggressiveหรือ--pruneเคล็ดลับ
daw

1
@JeffClites บทความที่คุณอ้างถึงคือ (ณ วันที่นี้) อายุ 11 ปีและระบุว่า "ด้วยเหตุนี้ - ความคืบหน้าอาจถูกลบออกจากหน้าการจัดการและปล่อยให้เป็นคุณลักษณะที่ไม่มีเอกสารในขณะนั้น" หากไม่ต้องขุดเพิ่มเติมดูเหมือนว่าแปลกที่ข้อความเสียยังคงอยู่ที่นั่น มีโอกาสที่พฤติกรรมจะถูกแก้ไขไซน์ที่เขียนบทความหรือไม่?
ท่อ

3

ฉันใช้คำสั่ง:

git gc --prune = ตอนนี้

และไม่มีคำเตือนวัตถุหลวมมากเกินไปหลังจากเสร็จสิ้น

แหล่งอ้างอิง: https://git-scm.com/docs/git-gc


1
ต้องบอกว่านี่เป็นวิธีแก้ปัญหาที่ได้ผลสำหรับฉัน น่าแปลกที่git gc --aggressiveไม่ได้ลบคำเตือน (และไม่ได้คลิกที่ UI ซึ่งดูเหมือนว่าจะทำง่ายๆgit gc)
saeraphin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.