Git Gui: Thường xuyên nhận được “Kho lưu trữ này hiện có khoảng 320 đối tượng rời.”


89

Mỗi khi tôi bắt đầu Git Gui trên một dự án cụ thể, tôi nhận được thông báo sau:

Kho này hiện có khoảng 320 đối tượng rời.

nhập mô tả hình ảnh ở đây

Sau đó, tôi tiếp tục nhấp vào , và tôi nhận được hộp thoại này:

nhập mô tả hình ảnh ở đây

Vấn đề là, khi tôi mở lại Git Gui, tôi nhận được cùng một thông báo , một lần nữa là khoảng 320 vật thể lỏng lẻo! Nó giống như thể nhấp vào không có tác dụng gì cả.


Bạn có thể đăng đầu ra của git count-objects -v?
CB Bailey


5
@TheCodeArtist Cảm ơn, tôi đã tìm thấy câu trả lời ở đó. Chạy git gcrõ ràng từ dòng lệnh đã làm việc cho tôi, theo nhận xét này .
sashoalm

Câu trả lời:


80

Chỉ cần bỏ qua cửa sổ bật lên, như Cách bỏ qua cửa sổ bật lên "Đối tượng lỏng lẻo" khi chạy 'git gui' gợi ý trong câu trả lời được chấp nhận là bỏ qua thực tế rằng Git đang thông báo một vấn đề hiệu suất có thể xảy ra với bạn. Điều này có thể sửa được bằng cách chạy lệnh này từ dòng lệnh:

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

Từ đầu ra của git help gc:

Chạy một số tác vụ quản lý trong kho lưu trữ hiện tại, chẳng hạn như nén các bản sửa đổi tệp (để giảm dung lượng đĩa và tăng hiệu suất) và xóa các đối tượng không thể truy cập có thể đã được tạo từ các lần gọi trước của git add.

Người dùng được khuyến khích chạy tác vụ này thường xuyên trong mỗi kho lưu trữ để duy trì khả năng sử dụng không gian đĩa tốt và hiệu suất hoạt động tốt.

--xâm lược

Thông thường git gc chạy rất nhanh trong khi vẫn cung cấp hiệu suất và sử dụng không gian đĩa tốt. Tùy chọn này sẽ khiến git gc tối ưu hóa mạnh mẽ hơn kho lưu trữ với chi phí mất nhiều thời gian hơn. Tác động của việc tối ưu hóa này là liên tục, vì vậy tùy chọn này chỉ cần được sử dụng thỉnh thoảng; mỗi vài trăm lần thay đổi hoặc lâu hơn.

Điều này sẽ giúp lời nhắc không xuất hiện trong một thời gian.


19
Điều kỳ lạ là chỉ đơn giản chạy git gctừ dòng lệnh đã sửa nó cho tôi. Có thể git guichạy như một cái gì đó git gc --extra-unaggressive:)
sashoalm

38
git prunedường như sửa chữa nó khi git gckhông.
Mahn

1
Bạn thường không muốn chạy với --aggressive; điều đó gây ra gitviệc tính toán lại các delta thường không hiệu quả và rất tốn thời gian; xem bài đăng này - mantrang gây hiểu lầm. Có lẽ chỉ cần đơn giản git gclà đủ trong trường hợp này.
Jeff Clites

16
Phải sử dụng --prune=allđể thoát khỏi tin nhắn. Không có git gctrên dòng lệnh cũng như các tùy chọn --aggressivehoặc --pruneđã làm thủ thuật.
daw

1
@JeffClites Bài báo mà bạn tham khảo là (tính đến ngày này) 11 tuổi và nói rằng "Vì lý do này - phạm vi có thể sẽ bị xóa khỏi trang manpages và để lại dưới dạng tính năng không có tài liệu trong một thời gian.". Nếu không tìm hiểu sâu hơn, có vẻ kỳ lạ là thông báo bị hỏng vẫn còn đó. Có khả năng là hành vi đã được sửa đổi sine bài báo đã được viết không?
pipe,

3

Tôi sử dụng lệnh:

git gc --prune = now

và không có quá nhiều cảnh báo đối tượng lỏng lẻo sau khi thực hiện.

nguồn tham khảo: https://git-scm.com/docs/git-gc


1
Phải nói rằng đây là giải pháp phù hợp với tôi. Thật kỳ lạ, git gc --aggressiveđã không xóa cảnh báo (và cũng không nhấp vào giao diện người dùng, điều này dường như thực hiện đơn giản git gc).
saeraphin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.