Tin tức

Git 2.55: Đóng gói MIDX gia tăng và Bảo trì thông minh hơn

Git 2.55 giới thiệu tính năng đóng gói lại chỉ mục đa gói (MIDX) gia tăng, cho phép `git repack` ghi và duy trì các chuỗi MIDX mà không cần viết lại toàn bộ chỉ mục, cùng với lệnh `git history` mới để sửa các commit trước đó.

July 3, 2026· 3 min read· Nguồn: The GitHub Blog
Git 2.55: Đóng gói MIDX gia tăng và Bảo trì thông minh hơn

Git 2.55 ra mắt với hơn 100 người đóng góp, và tính năng nổi bật là đóng gói lại chỉ mục đa gói (MIDX) gia tăng. Nếu bạn duy trì các kho lưu trữ lớn, đây là loại cải tiến cốt lõi giúp bạn thoát khỏi các lần chạy bảo trì chậm chạp và ghi đĩa quá mức.

Đóng gói lại MIDX gia tăng

Git đã hỗ trợ các chuỗi MIDX gia tăng từ phiên bản 2.47, nhưng cho đến nay, việc ghi chúng yêu cầu các bước riêng biệt. Trong Git 2.55, git repack --write-midx=incremental trực tiếp tạo một lớp MIDX mới cho các gói được tạo ra bởi lệnh repack, để nguyên các lớp hiện có. Riêng điều đó đã hữu ích cho các quy trình làm việc chỉ thêm vào.

Lợi ích thực sự đến khi kết hợp --write-midx=incremental với đóng gói hình học (--geometric=2 -d). Thuật toán hoạt động theo ba giai đoạn: đầu tiên, nó chọn các gói chưa được bất kỳ lớp MIDX nào bao phủ làm ứng viên đóng gói lại. Nếu lớp MIDX đầu có ít nhất repack.midxNewLayerThreshold gói, các gói đó cũng trở thành ứng viên. Thứ hai, nó áp dụng quy tắc đóng gói hình học cho tập ứng viên đó và ghi một lớp đầu mới. Thứ ba, nó nén các lớp MIDX liền kề khi số lượng đối tượng của lớp mới vượt quá repack.midxSplitFactor của số lượng lớp cũ.

Bước nén này chỉ là siêu dữ liệu — nó viết lại lớp MIDX mà không đóng gói lại các đối tượng bên dưới. Kết quả là một chuỗi phát triển theo logarit với tổng số đối tượng, nơi các lớp nhỏ, mới được viết lại thường xuyên và các lớp lớn, cũ không bị động đến. Đối với các kho lưu trữ có sự thay đổi đối tượng ổn định, điều này giảm đáng kể chi phí bảo trì định kỳ.

Sửa các commit trước đó với git history

Git 2.55 cũng giới thiệu git history, một lệnh mới để chỉnh sửa các commit trước đó trong một nhánh. Thay vì tạo các commit sửa lỗi và tự động squash, bạn có thể trực tiếp sửa đổi một commit ở giữa lịch sử của mình. Lệnh này mở một trình soạn thảo tương tác hiển thị chuỗi commit, cho phép bạn sửa đổi, viết lại lời nhắn hoặc sắp xếp lại các commit mà không cần thao tác fixup-và-squash.

Bên trong, git history sử dụng cơ chế giống rebase nhưng cung cấp giao diện đơn giản hơn. Nó đặc biệt hữu ích để trau chuốt một loạt bản vá trước khi gửi đi xem xét — bạn có thể sửa lỗi chính tả trong một commit cách ba bước mà không ảnh hưởng đến phần còn lại của loạt.

Cả hai tính năng đều có sẵn trong Git 2.55. Hãy nâng cấp và để các lần chạy bảo trì của bạn được thư giãn.