2010-01-22 35 views
187

Tôi đã thử tìm kiếm một hướng dẫn tốt về cách giảm kích thước của repo, nhưng không tìm thấy. Làm thế nào để giảm kích thước repo của tôi ... nó khoảng 10 MB, nhưng điều là Heroku chỉ cho phép 50 MB và tôi không có nơi gần hoàn thành phát triển ứng dụng của tôi.Giảm kích thước kho git

Tôi đã thêm các nghi phạm thông thường (nhật ký, nhà cung cấp, tài liệu, v.v.) vào .gitignore rồi. Mặc dù tôi chỉ thêm vào .gitignore gần đây.

Mọi đề xuất?

+1

Tôi vừa làm và đưa nó xuống 2,2 mb ... cảm ơn rất nhiều! Mặc dù điều đó dường như không làm giảm kích thước repo trên Heroku..hmm –

+9

Đẩy nó bằng --force. Nó sẽ ghi đè nội dung ngay cả khi không có thay đổi (không có cam kết mới, vv) –

+1

@MarcinGil - Dưới đây, VonC nói rằng bạn cần truy cập vào máy chủ để làm sạch máy chủ từ xa (nếu tôi phân tích cú pháp chính xác). – jww

Trả lời

221

git gc --aggressive là một cách để buộc quá trình prune diễn ra (để chắc chắn: git gc --aggressive --prune=now). Bạn có other commands để làm sạch repo quá. Tuy nhiên, đừng quên, đôi khi chỉ git gc có thể increase the size of the repo!

Nó cũng có thể được sử dụng sau filter-branch, để đánh dấu một số thư mục cần xóa khỏi lịch sử (với tăng thêm không gian); xem here. Nhưng điều đó có nghĩa là không ai kéo từ repo công cộng của bạn. filter-branch can keep backup refs in .git/refs/original, để thư mục đó cũng có thể được làm sạch.

Cuối cùng, như đã đề cập in this commentthis question; làm sạch reflog có thể giúp:

git reflog expire --all --expire=now 
git gc --prune=now --aggressive 

Một thậm chí hoàn thiện hơn, và có thể nguy hiểm, giải pháp là to remove unused objects from a git repository

+0

Trong trường hợp khác, hãy xem thêm http://stackoverflow.com/questions/1029969/why-is-my-git-repository-so-big – VonC

+1

Lưu ý: đừng quên các nhánh từ xa: http: // stackoverflow. com/questions/11255802/delete-remove-binary-file-from-git-repository-is-still-large – VonC

+1

Lưu ý tự: đừng quên các thẻ từ xa – saiyancoder

59

Cám ơn trả lời của bạn. Dưới đây là những gì tôi đã làm:

git gc 
git gc --aggressive 
git prune 

Điều đó dường như đã làm điều đó. Tôi bắt đầu với khoảng 10,5MB và bây giờ ít hơn 980KB.

+6

'prune' luôn được chạy bởi' gc' (với 2 tuần trước mặc định). – Cas

+80

U có thể chạy tất cả 3 bằng tỉa cho đến bây giờ bằng cách sử dụng 'git gc --aggressive --prune = now' – rahul286

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