Tôi sợ rằng tôi không thể tìm thấy bất cứ điều gì khá giống kịch bản cụ thể này.
Tôi có một kho lưu trữ git với rất nhiều lịch sử: 500+ chi nhánh, hơn 500 thẻ, trở lại giữa năm 2007. Nó chứa ~ 19.500 cam kết. Chúng tôi muốn xóa tất cả lịch sử trước ngày 1 tháng 1 năm 2010, để làm cho nó nhỏ hơn và dễ xử lý hơn (chúng tôi sẽ giữ một bản sao hoàn chỉnh của lịch sử trong kho lưu trữ).
Tôi biết cam kết mà tôi muốn trở thành gốc của kho lưu trữ mới. Tuy nhiên, tôi không thể tìm ra git mojo chính xác để cắt bớt repo để bắt đầu với cam kết đó. Tôi đoán một số biến thể của
git filter-branch
liên quan đến ghép sẽ là cần thiết; nó cũng có thể là cần thiết để đối xử với nhau của hơn 200 chi nhánh, chúng tôi muốn giữ riêng biệt và sau đó vá các repo trở lại với nhau (cái gì tôi làm biết làm thế nào để làm).
Có ai đã từng làm một cái gì đó như thế này? Tôi đã có git 1.7.2.3 nếu vấn đề đó.
git filter-branch --tag-name-filter cat -- --all
để cập nhật thẻ. Nhưng tôi cũng có các thẻ cũ hơn chỉ vào lịch sử cũ mà tôi muốn xóa. Làm thế nào tôi có thể thoát khỏi tất cả các thẻ cũ? Nếu tôi không xóa chúng, thì lịch sử cũ hơn sẽ không biến mất và tôi vẫn có thể xem nó vớigitk --all
.