Điểm nổi bật của Git 2.28

Giới thiệu init.defaultBranch

Khi khởi tạo một Git repository mới bằng git init, Git luôn tạo một nhánh khởi tạo là nhánh master. Trong Git 2.28, sử dụng tùy chọn init.defaultBranch khi config có thể ghi đè cài đặt mặc định này.
Git 2.28 luôn đọc trước giá trị init.defaultBranch trước khi tạo nhánh đầu tiên cho một repository mới. Nếu như giá trị này chưa được đặt, thì init.defaultBranch sẽ là master.

  • Người dùng có thể ghi đè biến cấu hình này dễ dàng như sau:
$ git config --global init.defaultBranch main
  • Biến cấu hình chỉ tác động tới những repository mới, và không ảnh hưởng đến các nhánh trong những dự án hiện tại bị đổi tên. git clone sẽ tiếp tục trỏ tới HEAD của repository bạn vừa clone về.

Bộ lọc Bloom cho changed-path

Trong Git 2.27, file commit-graph được mở rộng khả năng lưu changed-path với bộ lọc Bloom. Có nghĩa là sẽ giúp Git tìm những điểm trong lịch sử git nhanh hơn nhiều (ví dụ git log -- <path> hoặc git blame). Git 2.28 tận dụng các lợi thế này để cung cấp các cải tiến hiệu suất đáng kể.

File commit-graph là một tệp lưu cấu trúc dữ liệu bổ sung để tăng tốc độ đi qua các nút trong lịch sử của Git. Bạn đã từng chạy lệnh gitk hoặc git log --graph để dễ dàng hình dung lịch sử Git hay chưa. Đối với một dự án lớn có rất nhiều commit thì những thao tác này có thể mất nhiều thời gian (thường là vài giây) mới có thể xuất ra biểu đồ lịch sử Git, thì file commit-graph có thể cải thiện điều này.

Các tính năng mới

  • Trước đây khi bạn chạy git log -- <path> thì Git sẽ không đưa các merge commit lên trên view. Nhưng với cờ --show-pulls mới thì chúng ta có thể mang chúng trở lại giống như khi chạy git log hoặc git rev-list Ví dụ:
$ git log --oneline --graph --show-pulls -- <path>
  • git pull trong một repository mà theo dõi một nhánh từ xa, một trong 4 trường hợp có thể xảy ra: không có thay đổi gì, có thay đổi ở server, client, hoặc ở cả hai. Nếu không thay đổi thì chẳng cần làm gì, nếu có thay đổi ở server thì client chỉ cần fast-forward đến trạng thái của server. Nhưng nếu cả hai cùng thay đổi thì sao? Việc này phụ thuôc vào config trong pull.rebase. Nếu có thì nhánh của bạn được rebase đến đỉnh của nơi bạn pull về, không thì sẽ được merge. Có thể sẽ gây lộn xộn lịch sử git và khó để quay lại mà không pull lại từ đầu. Git 2.28 sẽ cảnh báo bạn trong trường hợp này, nêu như pull.rebase chưa được cài đặt và bạn không thêm --no-rebase hoặc --rebase khi git-pull.

  • Bao gồm GitHub Actions workflow, bạn có thể chạy các test tích hợp của Git trên nhiều nền tảng và trình biên dịch.

  • Thông báo lỗi cho Git bằng git bugreport

  • Khi sparse checkout git status sẽ cho bạn biết bao nhiêu phần trăm file đã được checkout.

Hãy ghé qua trang release notes 2.28 để tìm hiểu thêm chi tiết nhé.

Nguồn

Related article