Câu hỏi Tại sao git cứ nói với tôi rằng "Tự động đóng gói kho trong nền cho hiệu suất tối ưu"?


chú thích: Tôi không nghĩ rằng đây là bản sao của câu hỏi này, đang nói về một gói không có nền tảng treo cổ git với thông báo lỗi khác.


Trong một kho lưu trữ git của tôi, mỗi lần tôi gọi (ví dụ) git fetch, git prints:

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

Nó xuất hiện để in này mỗi khi tôi làm một git fetch nhiều lần, ngay cả khi không có thay đổi và không có gì cho git fetch làm. Điều này không có nhiều ý nghĩa với tôi. Nó cũng dường như xảy ra với các hoạt động mạng khác, chẳng hạn như git push và git pull.

Lệnh này trả về dấu nhắc ngay lập tức mà không có đầu ra nữa, và tôi không thể tìm thấy bất kỳ quá trình git nào đang chạy trên máy của tôi. Dường như chỉ xảy ra với kho lưu trữ này và chỉ trên máy này. git config -l | grep gc không trả lại gì cả.

Tôi có thể làm gì để chẩn đoán hoặc khắc phục vấn đề này?

$ git --version 
git version 2.0.1

Tôi đang sử dụng OS X 10.9.


68
2018-02-20 16:42


gốc


Có vẻ như vấn đề tương tự như câu hỏi bạn đã liên kết nhưng chỉ diễn ra đủ nhanh để không bị treo. - Holloway
Cũng thế có thể liên quan - Holloway
Trengot, tôi không nghĩ vậy. Thông báo lỗi là khác nhau một cách tinh tế - nó đề cập đến "nền". - Andrew Ferrier
Trengot, xin lỗi, bạn đã đúng, nó có liên quan (liên kết thứ hai). Cảm ơn con trỏ, xem câu trả lời của tôi bên dưới để biết chi tiết. - Andrew Ferrier


Các câu trả lời:


Tôi tìm thấy giải pháp từ bình luận thứ hai mà bạn cung cấp, Trengot, cảm ơn. Nó chỉ ra rằng tôi đã có một số đốm màu lơ lửng, trong đó .git/objects/17 và do đó kích hoạt đóng gói:

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

Điều này làm sạch chúng:

$ git gc --prune=now

Hãy nhận biết, theo nhận xét của Henrik bên dưới, điều này có thể hơi nguy hiểm. Bảo trọng!


117
2018-02-20 17:21



Cảm ơn! Điều này dường như làm việc cho tôi. Hãy nhận biết rằng --prune=now là một chút nguy hiểm. Theo mặc định, --prune sẽ giữ 2 tuần của các đốm màu lơ lửng, có nghĩa là nếu bạn vô tình làm một lần rebase không chính xác 5 phút trước, hoặc loại bỏ một nhánh ngày hôm qua, bạn có thể phục hồi. Khi bạn chạy lệnh này, bạn sẽ mất tất cả các blog đang treo lơ lửng cho đến bây giờ - không phải 2 tuần trước. Ngoài ra, nó có vẻ như bạn không bao giờ nên chạy nó trong khi thực hiện các lệnh Git khác trong một thiết bị đầu cuối khác, hoặc repo của bạn có thể bị hỏng. - Henrik N
Good điểm, @HenrikN, tôi đã thêm một bình luận cho câu trả lời của tôi. - Andrew Ferrier