2012-02-08 27 views
5

Tôi đã có một repo git với các tệp nhị phân PowerBuilder trị giá ba năm. Các repo là khá lớn (chỉ dưới 10GB), tôi giả định do thực tế là git chỉ có thể làm rất nhiều cho các đồng bằng nhị phân.Vứt bỏ lịch sử cũ trên git repo đầy đủ các tệp nhị phân

Tôi muốn nhận được repo này với kích thước có thể quản lý và tôi sẵn sàng vứt bỏ một loạt lịch sử ban đầu để làm điều đó. Tôi chỉ không thể tìm ra cách để có được git để làm điều đó. Tôi đã thử nghiền nát cam kết với rebase tương tác, nhưng nó đi kèm với một loạt các xung đột tôi không muốn đối phó với.

Có cách nào để chọn một cam kết và chỉ vứt bỏ mọi thứ trước đó? Tôi nhận ra nó sẽ viết lại SHA-1 cho các cam kết tiếp theo, đó là không có vấn đề gì.

+0

Bạn chắc chắn có thể thu gọn tất cả các cam kết trước bằng cách sử dụng lệnh rebase và squashes. Tôi vẫn đang nghĩ đến một cách thanh lịch/nhanh chóng để làm điều đó nếu bạn có quá nhiều cam kết. – TheBuzzSaw

Trả lời

0

Bạn có thể hủy toàn bộ chương trình thành một lần commit duy nhất.

Something như

git rebase -i [some early commit] 

và sau đó sử dụng chế độ khối hình ảnh trong vim dẹp gần như tất cả trong số họ sẽ là dễ nhất, tiếp theo là một fsckgc chạy.

Cách khác, bạn có thể sử dụng git filter-branch để xóa hoàn toàn các cam kết khỏi cây.

1

Đây là một (khác) cách:

git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout) 

Ví dụ trên sẽ cam kết trong phạm vi master~5..master và tạo repo mới ra khỏi đó. Bạn có thể sử dụng cùng một repo, nhưng ở trên sẽ an toàn hơn.

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