2011-08-26 34 views
7

Tôi vô tình thêm một kết xuất db (trên 1 GB) vào repo của tôi, đẩy nó và nhận thấy vài ngày sau đó. Tôi đã sử dụng git filter-branch để xóa các tập tin, hết hạn reflog và chạy git gc để cắt bớt các đối tượng không sử dụng, nhưng cơ sở dữ liệu dump blob vẫn còn trong repo. Tôi đã sử dụng Which commit has this blob? nhưng đã tìm thấy bất kỳ cam kết nào có tham chiếu đến đốm màu. Làm thế nào tôi có thể xóa điều này hoặc làm thế nào để tìm hiểu lý do tại sao nó không bị xóa trong git gc?Làm thế nào để xóa một đốm màu khỏi git repo

+1

Sẽ http://stackoverflow.com/questions/2116778/reduce-git -repository-size/2116892 # 2116892 giúp đỡ? hoặc http://stackoverflow.com/questions/1029969/why-is-my-git-repository-so-big? – VonC

Trả lời

13

Bạn đã gọi chính xác lệnh nào khi chạy git gc?

Note manpage của git gc:

Các tùy chọn cấu hình biến điều khiển gc.pruneExpire bao nhiêu tuổi các đối tượng lỏng lẻo unreferenced phải trước khi chúng được cắt tỉa. Giá trị mặc định là "2 tuần trước"

Vì vậy, nếu blob của bạn trẻ hơn 14 ngày, bạn phải gọi

git gc --prune=<date> (for date you also can insert now) 
+0

Cảm ơn, tôi đã không nhận thấy tùy chọn pruneExpire và không biết rằng git giữ các đối tượng không được kiểm duyệt trong một thời gian. Trước đây, tôi đã chạy git gc --prune --aggressive. Bây giờ, tôi đã chạy git reflog --all --expire = now trước git gc --prune và nó đã xóa blob. –

0

Bạn không thể chỉ làm rm .git/objects/path/to/blob?

Tôi không chắc chắn tại sao git-gc không xóa nó.

+10

Khi downvoting, tất cả mọi người có thể vui lòng giải thích lý do tại sao. Nó giúp mọi người đọc về một chủ đề để tìm hiểu lý do tại sao điều gì đó ít hấp dẫn hơn hoặc chỉ đơn giản là sai. :) –

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