Bitbucket: Xóa thư mục khỏi lịch sử Git

Khi lưu trữ Git trên Bitbucket, có giới hạn cứng là 2 GB - nếu vượt quá giới hạn này, bạn chỉ có quyền truy cập chỉ đọc vào kho lưu trữ. Ví dụ: để ngăn chặn điều này, bạn có thể xóa các thư mục hoặc tệp lớn khỏi các cam kết của mình. Nhưng cũng có thể trong các trường hợp khác (nếu dữ liệu truy cập đã vào lịch sử hoặc node_modules đã chuyển về trạng thái chính) bạn phải thao tác ngược lại lịch sử của Git, trái với bản chất của nó.


Bitbucket đã viết một bài báo chi tiết về điều này. Để chạy toàn bộ một trường hợp, trước tiên chúng tôi tạo một kho lưu trữ mới:

lịch sử bitbucket sạch sẽ

Sau đó, chúng tôi sao chép kho lưu trữ vào một thư mục trống trên máy cục bộ:

6ab7686fc508ce87c52b10bb5d01ee51

Bây giờ chúng ta tạo hai thư mục con với các tệp có nội dung ngẫu nhiên:

6ab7686fc508ce87c52b10bb5d01ee51

Bây giờ chúng tôi đang thúc đẩy chủ:

6ab7686fc508ce87c52b10bb5d01ee51

Bây giờ chúng tôi gần như đã đạt đến giới hạn cứng là 2 GB trên Bitbucket:

lịch sử bitbucket sạch sẽ

Chúng tôi cũng có thể kiểm tra điều này cục bộ (xem "size-pack"):

6ab7686fc508ce87c52b10bb5d01ee51

lịch sử bitbucket sạch sẽ

Nhiệm vụ bây giờ là xóa "foo" khỏi kho lưu trữ để giảm một nửa kích thước của nó. Để thực hiện việc này, trước tiên chúng ta chỉnh sửa HEAD hiện tại và ghi thư mục vào gitignore:

6ab7686fc508ce87c52b10bb5d01ee51

Cuối cùng, chúng tôi xóa thư mục với sự trợ giúp của BFG Repo Cleaner (BFG yêu cầu JRE hiện tại trên hệ thống như một yêu cầu hệ thống):

6ab7686fc508ce87c52b10bb5d01ee51

Bây giờ chúng ta có thể xem kết quả cục bộ:

6ab7686fc508ce87c52b10bb5d01ee51

lịch sử bitbucket sạch sẽ

Tuy nhiên, kích thước kho lưu trữ không thay đổi trên Bitbucket vì trình thu gom rác vẫn chưa được thực thi từ xa và bitbucket không thực hiện "git gc" với mỗi lần đẩy:

lịch sử bitbucket sạch sẽ

Điều này cũng được xác nhận bởi hỗ trợ:

lịch sử bitbucket sạch sẽ

Vì vậy, tốt nhất là gửi yêu cầu trực tiếp đến support@bitbucket.org để chạy thủ công "git gc" trong kho. Sau một thời gian ngắn, việc này cũng được thực hiện bởi nhóm hỗ trợ:

lịch sử bitbucket sạch sẽ

Nếu bạn "mới" di chuyển kho lưu trữ sang máy tính khác, chỉ 0,9 GB sẽ kết thúc trên đĩa. Nếu ai đó có sẵn phiên bản 1,8 GB cục bộ, thì chỉ cần "git pull" theo sau là "git gc".

Trở lại