2015-02-20 10 views
55

Note: Tôi không nghĩ rằng đây là một bản sao của this question, mà đang nói về một gói không phải nền mà treo git với một thông báo lỗi một cách tinh tế khác nhau.Tại sao git cứ nói với tôi đó là "Tự động đóng gói kho trong nền để có hiệu năng tối ưu"?


Trong một kho git của tôi, mỗi khi tôi gọi (ví dụ) git fetch, git in:

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

Nó dường như in này mỗi khi nếu 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 để thực hiện. Đ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 pushgit pull.

Lệnh trả về dấu nhắc ngay lập tức mà không có thêm đầu ra nào, 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.

+0

Dường như cùng một vấn đề với câu hỏi bạn đã liên kết nhưng chỉ diễn ra đủ nhanh để không bị treo. – Holloway

+0

Ngoài ra [có thể liên quan] (http://stackoverflow.com/questions/17925471/why-does-git-run-auto-packing-on-every-push-to-our-repo) – Holloway

+0

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". –

Trả lời

105

Tôi đã tìm thấy giải pháp từ nhận xét 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, mà là trong .git/objects/17 và do đó gây ra các bao bì:

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

này làm sạch chúng lên:

$ git gc --prune=now 

Hãy nhận biết, theo bình luận của Henrik dưới đây, điều này có thể có một chút nguy hiểm. Bảo trọng!

+2

Cảm ơn! Điều này dường như làm việc cho tôi. Lưu ý rằng '--prune = now' hơi nguy hiểm một chút. Theo mặc định, '--prune' sẽ giữ 2 tuần của các đốm màu lúng túng, có nghĩa là nếu bạn vô tình thực hiện một lần rebase không chính xác 5 phút trước, hoặc xóa 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ẻ] (https://git-scm.com/docs/git-gc) 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 thiết bị đầu cuối khác, hoặc repo của bạn có thể bị hỏng. –

+1

Điểm tốt, @HenrikN, tôi đã thêm nhận xét vào câu trả lời của mình. –

Các vấn đề liên quan