2010-02-12 32 views
6

Được rồi, khoảng 700 cam kết trước (> 30 ngày) Tôi vô tình lưu ThirdParty/mapper/Songbird_1.2.0-1146_windows-i686-msvc8.exe (loại iTunes tải xuống) vào kho lưu trữ Git cục bộ của tôi mà không nhận thấy, mà cũng đã được đẩy đến kho lưu trữ git lưu trữ từ xa, tôi nhận thấy ngày khác repo đã vượt quá 200mb, trong khi tôi đã mong đợi khoảng 20mb.Xấu cam kết Git

Tôi đã theo các hướng dẫn trong: http://github.com/guides/completely-remove-a-file-from-all-revisions

Cũng như chạy git gc --aggressive --prune, nhưng thư mục địa phương vẫn còn vượt quá 200MB. Trước khi tôi có thể sắp xếp repo từ xa tôi cần phải sắp xếp địa phương của tôi, là có một cái gì đó đặc biệt về trường hợp của tôi (tức là tập tin lớn, thời gian dài trước đây cam kết). Làm cách nào tôi có thể xóa hoàn toàn tệp này và đưa thư mục xuống đúng kích thước? Lưu ý để tránh di chuyển: Tôi cảm thấy điều này phù hợp hơn với StackOverflow vì Git chủ yếu là công cụ phát triển địa phương vào lúc này, cộng đồng được hỗ trợ và không phải là một phần của bất kỳ bản phân phối chính thống hoặc kỳ vọng nào của sysadmins, tức là tại thời điểm dev biết quản trị của git là tốt nhất.

Trả lời

3

tôi đã viết về một vấn đề tương tự trong "git: shrinking Subversion import."

Các git filter-branch manpage có một danh sách kiểm tra cho co lại một kho lưu trữ mà khuyên nên chạy filter-branch và sau đó nhân bản để bỏ lại đằng sau những cruft.

Nhân bản với một con đường hệ thống tập tin làm cho liên kết cứng, vì vậy sử dụng một URL:

$ git clone file:///home/gbacon/src/dBTools.git 

Ngay cả sau khi làm điều này, một số đốm màu giấu tên lớn đã sống sót sau clone. Nhờ #git trên freenode cho đề xuất loại bỏ việc reflog:

$ git reflog expire --verbose --expire=0 --all 
$ git gc --prune=0