Git 2.54 ra mắt: Lệnh git history mới và các cải tiến đáng chú ý
Dự án Git vừa phát hành phiên bản 2.54 với sự đóng góp của hơn 137 người, mang đến lệnh thử nghiệm git history để chỉnh sửa lịch sử dễ dàng hơn, hỗ trợ cấu hình hooks trực tiếp trong file config và nâng cấp chiến lược bảo trì mặc định.

Dự án mã nguồn mở Git vừa chính thức phát hành phiên bản 2.54, mang đến hàng loạt tính năng mới và bản sửa lỗi từ hơn 137 người đóng góp, trong đó có 66 gương mặt mới. Đây là bản cập nhật quan trọng tiếp theo sau phiên bản 2.52 mà chúng tôi đã từng giới thiệu, tập trung vào việc cải thiện trải nghiệm của nhà phát triển và tối ưu hóa hiệu suất.
Git 2.54 Highlights
Dưới đây là cái nhìn chi tiết về những tính năng và thay đổi thú vị nhất được giới thiệu trong các bản phát hành 2.53 và 2.54 vừa qua.
Viết lại lịch sử với git history
Dự án Git từ lâu đã cung cấp các công cụ mạnh mẽ để viết lại lịch sử kho chứa, trong đó nổi bật nhất là git rebase -i. Tuy nhiên, sự linh hoạt của rebase đi kèm với sự phức tạp; đôi khi chỉ để sửa một lỗi chính tả trong thông báo commit cách đây 3 phiên bản, bạn cũng phải trải qua quy trình thiết lập to-do list khá rườm rà.
Git 2.54 giới thiệu một lệnh thử nghiệm mới được thiết kế cho các trường hợp đơn giản này: git history. Hiện tại, lệnh này hỗ trợ hai thao tác chính: reword và split.
git history reword: Mở trình soạn thảo với thông báo của commit được chỉ định và ghi đè nó tại chỗ, cập nhật mọi nhánh dẫn xuất từ commit đó. Khác vớigit rebase, nó không chạm vào cây làm việc (working tree) hay chỉ mục (index), và thậm chí có thể hoạt động trên kho chứa bare.git history split: Cho phép bạn tách tương tác một commit thành hai bằng cách chọn các phần (hunks) cần được tách ra thành một commit cha mới.
Lệnh git history được xây dựng dựa trên cơ chế cốt lõi của git replay, cho phép nó hoạt động mà không cần chạm vào cây làm việc, rất phù hợp cho việc viết kịch bản và tự động hóa. Tuy nhiên, lệnh này vẫn ở trạng thái thử nghiệm và giao diện có thể thay đổi trong tương lai.
Cấu hình Hooks trực tiếp trong file cấu hình
Nếu bạn từng muốn chia sẻ Git hook trên nhiều kho chứa, có thể bạn đã phải sử dụng các công cụ quản lý hook của bên thứ ba hoặc tạo liên kết tượng trưng (symlink) thủ công. Trước đây, Git hooks chỉ có thể được định nghĩa dưới dạng các tập lệnh thực thi trong thư mục .git/hooks.
Git 2.54 giới thiệu cách mới để định nghĩa hooks: trực tiếp trong các tệp cấu hình. Thay vì đặt tập lệnh tại .git/hooks/pre-commit, giờ đây bạn có thể viết:
[hook "linter"]
event = pre-commit
command = ~/bin/linter --cpp20
Khóa hook..command chỉ định lệnh cần chạy, và hook..event chỉ định sự kiện hook sẽ kích hoạt nó. Vì đây chỉ là cấu hình, nó có thể nằm trong ~/.gitconfig của người dùng, /etc/gitconfig toàn hệ thống, hoặc cấu hình cục bộ của kho chứa.
Bạn thậm chí có thể chạy nhiều hook cho cùng một sự kiện. Ví dụ, nếu muốn chạy cả linter và trình quét mật mã trước mỗi lần commit:
[hook "linter"]
event = pre-commit
command = ~/bin/linter --cpp20
[hook "no-leaks"]
event = pre-commit
command = ~/bin/leak-detector
Git sẽ chạy chúng theo thứ tự gặp phải trong cấu hình. Các hook truyền thống trong $GIT_DIR/hooks vẫn hoạt động bình thường và được chạy cuối cùng.
Chiến lược đóng gói hình học mặc định trong bảo trì
Ở phiên bản Git 2.52, chiến lược hình học (geometric strategy) mới đã được giới thiệu trong git maintenance. Chiến lược này hoạt động bằng cách kiểm tra nội dung kho chứa để xác định xem một số tệp pack có thể được kết hợp để tạo thành một cấp số nhân theo số lượng đối tượng hay không.
Trong phiên bản 2.54, chiến lược này trở thành mặc định cho bảo trì thủ công. Điều này có nghĩa là khi bạn chạy git maintenance run mà không chỉ định chiến lược, Git giờ đây sẽ sử dụng phương pháp tiếp cận hình học thay vì tác vụ gc truyền thống.
Trong thực tế, điều này giúp các kho chứa của bạn được bảo trì hiệu quả hơn ngay từ đầu. Chiến lược hình học tránh các thao tác đóng gói "tất cả thành một" tốn kém mà gc thực hiện, thay vào đó kết hợp các pack tăng dần khi có thể và chỉ quay lại gc đầy đủ khi cần thiết để hợp nhất toàn bộ kho chứa thành một pack duy nhất.
Các cải tiến khác
Ngoài những thay đổi lớn nêu trên, Git 2.54 còn mang đến nhiều bản cập nhật nhỏ nhưng hữu ích:
- Cải thiện
git add -p: Khi điều hướng giữa các phần (hunks) bằng các phím J và K, Git giờ đây hiển thị xem bạn đã chấp nhận hay bỏ qua từng hunk nào trước đó. Ngoài ra, cờ mới--no-auto-advancethay đổi cách phiên chuyển đổi giữa các tệp, giúp bạn kiểm soát tốt hơn quá trình staging. git replaytrưởng thành hơn: Lệnh thử nghiệm này giờ đây thực hiện cập nhật tham chiếu nguyên tử theo mặc định, có chế độ--revertmới để đảo ngược thay đổi từ một phạm vi commit, và hỗ trợ phát lại (replay) xuống tận commit gốc.- Xử lý HTTP 429: Git giờ đây có thể xử lý phản hồi HTTP 429 "Too Many Requests" bằng cách thử lại yêu cầu, tuân thủ tiêu đề
Retry-Aftercủa máy chủ hoặc sử dụng độ trễ có thể cấu hình. git log -Ltương thích hơn: Lệnh này hiện định tuyến đầu ra của nó qua đường ống diff tiêu chuẩn, giúp tương thích với các tùy chọn định dạng bản vá và tìm kiếm "pickaxe" (-S và -G) lần đầu tiên.- Hỗ trợ Unicode cho Alias: Git 2.54 gỡ bỏ hạn chế về ký tự ASCII cho tên alias. Bạn giờ đây có thể định nghĩa các alias như
[alias "hämta"]hoặc[alias "状態"]bằng cú pháp tiểu mục mới.
Để khám phá thêm chi tiết, bạn có thể xem ghi chú phát hành đầy đủ cho phiên bản 2.53 và 2.54.
Bài viết liên quan
Phần mềm
Kimi Vendor Verifier: Công cụ mã nguồn mở xác minh độ chính xác của nhà cung cấp suy luận
20 tháng 4, 2026

Phần mềm
GitHub điều chỉnh gói Copilot Individual: Tạm dừng đăng ký mới và siết chặt giới hạn sử dụng
20 tháng 4, 2026

Công nghệ
Linux Kernel 7.1 sẽ trang bị trình điều khiển NTFS mới: Tin vui cho người dùng Windows
20 tháng 4, 2026
