Đ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ớiHEAD
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ệnhgitk
hoặcgit 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ì filecommit-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ạygit log
hoặcgit 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 trongpull.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
khigit-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é.