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


107

หมายเหตุ : ฉันไม่คิดว่านี่เป็นคำถามที่ซ้ำกันซึ่งกำลังพูดถึงแพ็คที่ไม่ใช่พื้นหลังซึ่งแฮงค์คอมไพล์ด้วยข้อความแสดงข้อผิดพลาดที่แตกต่างกันเล็กน้อย


ในที่เก็บ git ของฉันทุกครั้งที่ฉันเรียกใช้ (เช่น) git fetchgit จะพิมพ์:

Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.

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

คำสั่งจะกลับไปที่พรอมต์ทันทีโดยไม่มีเอาต์พุตเพิ่มเติมและฉันไม่พบกระบวนการคอมไพล์ใด ๆ ที่ทำงานบนเครื่องของฉัน ดูเหมือนว่าจะเกิดขึ้นเฉพาะกับที่เก็บนี้และในเครื่องนี้เท่านั้น git config -l | grep gcไม่ส่งคืนอะไรเลย

ฉันจะทำอย่างไรเพื่อวินิจฉัยหรือแก้ไขปัญหานี้

$ git --version 
git version 2.0.1

ฉันใช้ OS X 10.9


ดูเหมือนปัญหาเดียวกันกับคำถามที่คุณเชื่อมโยง แต่เพิ่งเกิดขึ้นเร็วพอที่จะไม่ปรากฏ
Holloway

นอกจากนี้ยังอาจเกี่ยวข้อง
Holloway

Trengot ฉันไม่คิดอย่างนั้น ข้อความแสดงข้อผิดพลาดแตกต่างกันเล็กน้อยโดยกล่าวถึง "พื้นหลัง"
Andrew Ferrier

Trengot ขออภัยคุณพูดถูกมันเกี่ยวข้องกัน (ลิงค์ที่สอง) ขอบคุณสำหรับตัวชี้ดูคำตอบของฉันด้านล่างสำหรับรายละเอียด
Andrew Ferrier

คำตอบ:


176

ฉันพบวิธีแก้ปัญหาจากความคิดเห็นที่สองที่คุณให้มา Trengot ขอบคุณ ปรากฎว่าฉันมี blobs ห้อยอยู่ซึ่งอยู่ในนั้น.git/objects/17และทำให้เกิดการบรรจุ:

$ git fsck
dangling blob d9ff0aeac4aa8b4e0907daed675ebf60278bc977
dangling blob dbff2d073741f9775c815d4a3c623736af224dad
dangling blob e1ffbab1c5b985cd1cd3bc0281075ea2ed80744a
dangling blob fdff59878ccb3a75689f4acca615cfb635288774

สิ่งนี้ทำให้พวกเขาสะอาดขึ้น:

$ git gc --prune=now

โปรดทราบว่าตามความคิดเห็นของ Henrik ด้านล่างนี้อาจเป็นอันตรายเล็กน้อย ดูแล!


24
ขอบคุณ! สิ่งนี้ดูเหมือนจะใช้ได้ผลสำหรับฉัน ระวัง--prune=nowนิดนึงว่าอันตราย โดยค่าเริ่มต้น--pruneจะเก็บ blobs ห้อยไว้ 2 สัปดาห์ซึ่งหมายความว่าหากคุณทำฐานข้อมูลใหม่ที่ไม่ถูกต้องเมื่อ 5 นาทีก่อนโดยไม่ได้ตั้งใจหรือลบสาขาเมื่อวานนี้คุณสามารถกู้คืนได้ เมื่อคุณเรียกใช้คำสั่งนี้คุณจะสูญเสียบล็อกห้อยทั้งหมดจนถึงตอนนี้ไม่ใช่ 2 สัปดาห์ที่ผ่านมา นอกจากนี้ดูเหมือนว่าคุณไม่ควรเรียกใช้ในขณะที่ใช้คำสั่ง Git อื่น ๆ ในเทอร์มินัลอื่นมิฉะนั้น repo ของคุณอาจเสียหายได้
Henrik N

3
คุณช่วยชีวิตฉันไว้
Owen Chen

มันไม่เคยเกิดขึ้นมาก่อน สำหรับฉันทำงานโดย 'git clean -fd' แปลก แต่อาจเป็นเพราะไฟล์ที่ไม่ถูกติดตาม
Shrikant Phadke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.