Bỏ qua đến nội dung chính
Về trang chủ
tools-cli Tech 6 phút đọc

Git 2.55 Ra Mắt: Tái Đóng Gói Tăng Cường, Sửa Lịch Sử Dễ Dàng và Bitmaps Nhanh Hơn 50%! 🚀

Bản cập nhật Git 2.55 mang đến những cải tiến đáng kể về hiệu suất, đặc biệt là khả năng tái đóng gói (repacking) incremental và tạo Bitmaps nhanh hơn 50%, cùng tính năng `git history fixup` thử nghiệm giúp tối ưu hóa quy trình làm việc cho các nhà phát triển.

Tier 1 · nguồn 99% độ tin cậy Auto-priority
Nguồn gốc github.blog

Chào mừng quý vị độc giả của Kalera News! Hôm nay, chúng ta sẽ cùng khám phá những điểm nổi bật đáng chú ý từ phiên bản Git 2.55 vừa ra mắt. Đây là một bản cập nhật không chỉ tập trung vào việc nâng cao hiệu suất đáng kể cho các kho lưu trữ lớn mà còn giới thiệu những công cụ mới giúp đơn giản hóa quy trình làm việc cho các kỹ sư phát triển.

Nguồn: GitHub Blog Tác giả: Taylor Blau (Kỹ sư phần mềm chính tại GitHub) Ngày phát hành: 29 tháng 6 năm 2026

---

Tái Đóng Gói Với Multi-Pack Indexes (MIDX) Tăng Cường (Incremental) ✨

Git lưu trữ nội dung kho lưu trữ dưới dạng các tệp nén (packfile), mỗi tệp có một chỉ mục gói tương ứng. Multi-Pack Index (MIDX) cung cấp một chỉ mục duy nhất cho nhiều packfile để tăng tốc độ tìm kiếm đối tượng. Nếu Git 2.47 đã giới thiệu MIDX incremental (lưu trữ chỉ mục dưới dạng một chuỗi các lớp để tránh ghi lại một tệp chỉ mục khổng lồ), thì Git 2.55 đã dạy git repack cách trực tiếp ghi các chuỗi MIDX incremental này.

Ghi Chuỗi MIDX Tăng Cường Trực Tiếp

Để ghi một lớp mới cho các gói được tạo bởi quá trình repack mà vẫn giữ nguyên các lớp hiện có:

bash $ git repack --write-midx=incremental

Tái Đóng Gói Hình Học (Geometric Incremental Repacking)

Để ngăn chặn chuỗi các lớp phát triển vô hạn, bạn có thể kết hợp việc ghi incremental với tái đóng gói hình học:

bash $ git repack --write-midx=incremental --geometric=2 -d

Cách tiếp cận này giúp giữ số lượng lớp theo logarit so với tổng số đối tượng, đảm bảo các lớp mới, nhỏ hơn được ghi lại thường xuyên trong khi các lớp cũ, lớn hơn vẫn được giữ nguyên. Điều này đặc biệt hữu ích cho các kho lưu trữ có lịch sử và dung lượng khổng lồ.

---

Sửa Lịch Sử Commit Sớm Hơn Với `git history fixup` Thử Nghiệm 🧪🛠️

Git 2.55 tiếp tục phát triển lệnh git history thử nghiệm (được giới thiệu trong Git 2.54) bằng cách bổ sung lệnh con fixup mới. Tính năng này cho phép bạn áp dụng trực tiếp các thay đổi hiện có trong vùng staging (index) vào một commit sớm hơn trong lịch sử của bạn, tự động rebase các commit tiếp theo.

bash $ git history fixup <commit>

Điểm cần lưu ý: * Hoạt động: Gộp các thay đổi đã staged vào <commit> mục tiêu và phát lại các commit con lên trên. Commit mục tiêu giữ nguyên thông điệp và thông tin tác giả ban đầu theo mặc định (trừ khi bạn truyền cờ --reedit-message). * An toàn & Hạn chế: Tính năng này đang trong giai đoạn thử nghiệm và khá thận trọng. Nó yêu cầu một working tree (không thể chạy trong kho lưu trữ trống) và nếu việc áp dụng thay đổi gây ra xung đột, lệnh sẽ hủy bỏ ngay lập tức thay vì để kho lưu trữ trong trạng thái bị hỏng.

---

Các Git Hooks Song Song Dựa Trên Cấu Hình ⚡⚙️

Dựa trên các hook dựa trên cấu hình được giới thiệu trong Git 2.54, Git 2.55 cho phép các hook được cấu hình tương thích chạy song song. Điều này có thể tăng tốc đáng kể các quy trình kiểm tra hoặc xử lý tự động của bạn.

* Kích hoạt thực thi song song: Để kích hoạt, bạn khai báo:

ini [hook "<name>"] parallel = true

* Giới hạn số lượng tác vụ đồng thời (Concurrency Limits): Có thể kiểm soát toàn cục qua hook.jobs, theo từng sự kiện qua hook.<event>.jobs, hoặc trực tiếp trên dòng lệnh:

bash $ git hook run -j <jobs>

Lưu ý: Các hook yêu cầu trạng thái chia sẻ (như hook thông điệp commit) sẽ tiếp tục chạy tuần tự.

---

Hỗ Trợ FSMonitor Trên Linux 🐧👁️

Daemon FSMonitor tích hợp sẵn của Git (trước đây chỉ hỗ trợ macOS và Windows) hiện đã có mặt trên Linux. Tính năng này sử dụng inotify và chạy mà không yêu cầu quyền đặc quyền. Đối với các kho lưu trữ rất lớn, bạn có thể cần tăng giới hạn fs.inotify.max_user_watches của hệ thống. Daemon vẫn hoạt động thận trọng và cần được kích hoạt thủ công (opt-in) cho các kho lưu trữ được gắn trên mạng.

---

Tăng Tốc Bitmaps Hơn 50% 🚀⏱️

Một trong những cải tiến hiệu suất ấn tượng nhất của Git 2.55 là việc tối ưu hóa đáng kể quá trình tạo reachability bitmap trong các tác vụ bảo trì (ví dụ: git repack --write-midx-bitmaps). Git 2.55 thực hiện điều này bằng cách tránh đệ quy cây không cần thiết, tái sử dụng các bitmap đã được tính toán trước, lưu trữ vị trí đối tượng và sắp xếp bitmap trước khi thực hiện phép XOR.

* Kết quả đáng kinh ngạc: Trong một kho lưu trữ lớn, thời gian tạo bitmap đã giảm hơn 50%, từ 612 giây xuống còn 294 giây! Pseudo-merge Bitmaps cũng nhận được cập nhật, duy trì tốc độ duyệt nhanh gấp ~20 lần đồng thời giảm đáng kể chi phí trên đường dẫn tạo bitmap.

---

Các Cải Tiến Đáng Chú Ý Khác ✨

* git format-rev: Một lệnh thử nghiệm mới để định dạng bản sửa đổi một cách đẹp mắt từ đầu vào chuẩn. * Giới hạn làn đồ thị: Để giúp đầu ra đồ thị dễ quản lý hơn trong các kho lưu trữ có lịch sử rất rộng, Git 2.55 bổ sung --graph-lane-limit=<n> cho git log --graph. Các làn vượt quá giới hạn sẽ được thay thế bằng ~. * Chọn phạm vi commit cũ nhất: Một tùy chọn --max-count-oldest=<n> mới được thêm vào git rev-list và họ lệnh git log, cho phép nhà phát triển chọn n commit cũ nhất trong một phạm vi thay vì chỉ những commit gần đây nhất.

---

Kết Luận

Git 2.55 một lần nữa chứng minh rằng Git vẫn đang không ngừng phát triển. Phiên bản này mang lại những cải tiến tốc độ đáng kể cho các kho lưu trữ khổng lồ (tạo bitmap nhanh hơn 50%) và các công cụ quy trình làm việc cực kỳ tiện lợi như git history fixup cùng khả năng thực thi hook song song. Đây thực sự là một bản cập nhật không thể bỏ qua đối với cộng đồng phát triển phần mềm.

Đã đọc hết tin tools-cli hiện có.