# Mặc định Hash mới của Git – Ý nghĩa của nó

Published: 2026-10-02

Mặc định SHA-256 được đề xuất của Git tạo ra một ranh giới tương thích cho các kho lưu trữ mới. Chúng tôi kiểm tra kế hoạch chính thức, phản đối của Scott Chacon và một ngoại lệ xem trước GitHub đang hoạt động, sau đó đề cập đến Pi 1.0 và SvelteKit 3. Phán quyết: CẦN ĐÁNH GIÁ.

Canonical: https://thedailydiff.dev/vi/video/2026-10-02-git-hash-split/

## Nội dung video này đề cập

- Tại sao hai kho lưu trữ Git có thể từ chối giao tiếp?
- Git 3 thực sự thay đổi điều gì?
- Tại sao lại thay thế SHA-1 nếu Git phát hiện va chạm?
- Kiểm tra khả năng tương thích cục bộ của chúng tôi đã cho thấy điều gì?
- Điều gì còn sót lại sau sự cố trong Pi Durable?

## Chương

- 0:00 Tại sao hai kho lưu trữ Git có thể từ chối giao tiếp?
- 0:34 Git 3 thực sự thay đổi điều gì?
- 0:58 Tại sao lại thay thế SHA-1 nếu Git phát hiện va chạm?
- 1:51 Kiểm tra khả năng tương thích cục bộ của chúng tôi đã cho thấy điều gì?
- 2:49 Điều gì còn sót lại sau sự cố trong Pi Durable?
- 3:30 SvelteKit 3 di chuyển những gì cho bạn?
- 4:03 Ngoại lệ đang hoạt động của GitHub chứng minh điều gì?
- 4:38 Tại sao phán quyết của tôi phụ thuộc vào toàn bộ chuỗi công cụ?

## Bản ghi đã dịch

Được dịch từ lời tường thuật tiếng Anh gốc. Âm thanh và phụ đề có sẵn được điều khiển bởi YouTube.

### Tại sao hai kho lưu trữ Git có thể từ chối giao tiếp?

0:00 Bạn sẽ nghĩ việc nâng cấp Git giúp các công cụ của bạn tiếp tục giao tiếp. Mặc định hash mới được lên kế hoạch của Git tạo ra các kho lưu trữ mà định dạng cũ hiện tại không thể giao tiếp được. Trong video này, tại sao lại thay đổi? Điều gì bị hỏng? Ai đã sẵn sàng? Đã có một ngoại lệ đang hoạt động trên GitHub. Tôi sẽ cho bạn thấy điều đó chứng minh điều gì vào cuối. Hôm nay là thứ Sáu, ngày hai tháng Mười, và đây là The Daily Diff.

0:18 Vào thứ Năm, một đồng sáng lập GitHub gọi thay đổi được lên kế hoạch của Git là một sai lầm tốn kém. Pi đã xuất xưởng một bộ tác nhân mới, và SvelteKit đã xuất xưởng một bản di chuyển khác. Scott Chacon đã giúp xây dựng GitHub và viết Pro Git, vì vậy khiếu nại này đến từ nội bộ. Nội bộ cũng bán các công cụ Git. Đầu tiên, kế hoạch thực tế.

### Git 3 thực sự thay đổi điều gì?

0:35 Git 3 sẽ mặc định các kho lưu trữ mới thành SHA-256, một khi các thư viện và dịch vụ lưu trữ sẵn sàng hỗ trợ nó. Tài liệu chính thức không đưa ra ngày phát hành và vẫn hỗ trợ SHA-1. Kho lưu trữ hiện có của bạn không tự động thay đổi định dạng khi bạn nâng cấp tệp thực thi. Điều đó đáng nhớ trước khi cuộc trò chuyện nhóm của bạn lên lịch một cuộc di chuyển khẩn cấp. Vấn đề là một mặc định được đề xuất, và thời hạn hiện tại là một lịch trống.

### Tại sao lại thay thế SHA-1 nếu Git phát hiện va chạm?

0:58 Tại sao lại thay đổi? Git đặt tên đối tượng bằng cách hash nội dung của chúng. Các tệp được đưa vào cây, và các commit tham chiếu đến cây và các commit trước đó. Điều đó mang lại tính toàn vẹn trên toàn bộ lịch sử. Thay đổi lược đồ hash và tên đối tượng cũng thay đổi, bao gồm các tham chiếu được lưu trữ bên trong các đối tượng khác. Chacon quay lại Linus Torvalds, người tạo ra Git, lập luận rằng

1:17 phân phối đáng tin cậy là quan trọng. Đó là một vị trí lịch sử, và Linus đã chọn SHA-1 vào năm hai nghìn không trăm lẻ năm. Trường hợp bảo mật đã thay đổi kể từ đó. Các nhà nghiên cứu đã chứng minh các va chạm SHA-1 vào năm hai nghìn không trăm mười bảy, và sau đó chứng minh một cuộc tấn công tiền tố đã chọn chống lại chứng chỉ định danh PGP. Git hiện đại phát hiện các cuộc tấn công va chạm đã biết bằng SHA-1 được tăng cường. Những người duy trì nó cũng muốn bảo vệ chống lại các cuộc tấn công trong tương lai, đó là một điều hợp lý để mong muốn từ các chữ ký.

1:41 Chacon nghĩ rằng hóa đơn hệ sinh thái mang lại quá ít bảo mật. Ông đề xuất ký một tổng kiểm tra mạnh riêng biệt của nội dung cây, trong khi vẫn giữ việc địa chỉ hóa đối tượng hiện tại bên dưới. Điều gì bị hỏng? Tôi đã tạo cả hai định dạng cục bộ và hash cùng một tệp nhỏ.

### Kiểm tra khả năng tương thích cục bộ của chúng tôi đã cho thấy điều gì?

1:54 Một tên đối tượng có bốn mươi ký tự hex, tên kia có sáu mươi bốn. Sau đó tôi thử tìm nạp giữa chúng. Git đã cài đặt của tôi đã từ chối nó với các thuật toán không khớp, chính xác là khoảng cách tương thích được mô tả trong hướng dẫn chính thức hiện tại. Điều này đã sử dụng Git đã cài đặt cũ của tôi, vì vậy nó cho chúng ta biết về ranh giới ngày nay. Gọi nó là một thử nghiệm của Git 3 chưa phát hành sẽ là một cách tính toán sáng tạo. Công việc di chuyển tiếp cận các tập lệnh giả định độ dài của một hash, và các hệ thống liên kết với tên đối tượng.

2:19 Việc rehash một lịch sử cần một ánh xạ giữa các định danh đó. Thiết kế chuyển đổi của Git bao gồm ánh xạ và xử lý chữ ký đó. Sự sẵn sàng triển khai là quan trọng, vì một tài liệu thiết kế không nâng cấp thư viện ẩn bên trong công cụ phát triển yêu thích của bạn. Đó là chi phí con người trong lập luận của Chacon. Mỗi người duy trì công cụ có thêm một công việc tương thích khác, trong khi người dùng phát hiện ra rằng hệ thống kiểm soát phiên bản của họ bây giờ cần kiểm soát phiên bản. Hiện tại, hãy kiểm tra máy chủ và công cụ của bạn trước khi chọn định dạng mới cho một

2:44 dự án. Các nhóm hiện có thể giữ định dạng hiện tại của họ trong khi hệ sinh thái đó theo kịp. Trong khi đó, Pi đã đạt một chấm không.

### Điều gì còn sót lại sau sự cố trong Pi Durable?

2:51 Đây là một bộ tác nhân mã hóa từ Earendil, với hỗ trợ MCP gốc thông qua Codemode và các công cụ được tải khi cần thiết. Nhóm gọi chủ nghĩa tối giản là điểm mấu chốt. Nếu thiết lập tác nhân của bạn đã giống như một chính phủ nhỏ, việc giữ các công cụ ra khỏi lời nhắc cho đến khi cần thiết nghe có vẻ giống như cải cách hành chính. Nó cũng phát hành Pi Durable, một framework thử nghiệm riêng biệt. Các tác vụ lưu các điểm kiểm tra để một tiến trình được khởi động lại có thể tiếp tục công việc chưa hoàn thành từ bộ nhớ bền vững. Chi tiết quan trọng là phát lại công cụ.

3:16 Một công cụ bị gián đoạn bởi sự cố chỉ chạy lại khi nó tuyên bố an toàn. Nếu không, mô hình sẽ được thông báo rằng nó đã bị gián đoạn. Đó là một ranh giới hữu ích khi một công cụ có thể tiêu tiền. Tôi muốn trợ lý ghi nhớ danh sách mua sắm của tôi mà không mừng sự cố bằng cách mua hai lần.

### SvelteKit 3 di chuyển những gì cho bạn?

3:30 SvelteKit 3 cũng đã ra mắt vào thứ Năm, chuyển cấu hình vào Vite và thay thế dollar lib bằng hash lib, sử dụng import subpath gói tiêu chuẩn. Lệnh di chuyển viết lại những gì nó có thể và để lại một danh sách việc cần làm cho phần còn lại. Robot của bạn có thể giúp, và diff của bạn vẫn đáng đọc. Thông báo thậm chí còn tuyển dụng bạn bè robot của bạn cho phần còn lại. Chúng ta đang đạt đến điểm mà một bản nâng cấp framework cung cấp bài tập về nhà và một giáo viên thay thế được đề xuất. Và các hàm từ xa vẫn cần Async Svelte thử nghiệm.

3:56 Một số phiên bản chính tạo cảm giác an tâm, nhưng các tính năng riêng lẻ mang theo nhãn độ trưởng thành riêng. Hãy kiểm tra những cái bạn thực sự đang sử dụng.

### Ngoại lệ đang hoạt động của GitHub chứng minh điều gì?

4:03 Vậy ai đã sẵn sàng cho định dạng mới của Git? Đây là ngoại lệ đó. Một kho lưu trữ GitHub công khai chứa bài nói chuyện của Brian Carlson đã trả về một tên đối tượng SHA-256 đầy đủ. Tôi đã kiểm tra trực tiếp remote công khai. Các slide bài nói chuyện gọi hỗ trợ là bản xem trước riêng tư và nói rằng việc tạo kho lưu trữ vẫn đang đến. Có sự tiến bộ thực sự đằng sau phòng chờ. Điều đó chứng minh GitHub có thể phục vụ kho lưu trữ xem trước này.

4:24 Nó không đảm bảo rằng việc tạo dự án thông thường hoặc tất cả các tích hợp của bạn đã sẵn sàng. tích hợp đã sẵn sàng. Ngoại lệ có một ranh giới quyền hạn. Nếu bạn muốn đọc điều này hơn là nghe tôi nói, diff sẽ đến hộp thư đến của bạn mỗi sáng, miễn phí tại the daily diff dot dev, liên kết bên dưới. Vì vậy, phán quyết hôm nay là CẦN ĐÁNH GIÁ.

### Tại sao phán quyết của tôi phụ thuộc vào toàn bộ chuỗi công cụ?

4:40 Tôi sẽ giữ tùy chọn hash mạnh hơn, và kiểm tra toàn bộ chuỗi công cụ trước khi thay đổi các mặc định. Khả năng tương thích là một phần của việc cung cấp cải thiện bảo mật. Và đó là diff cho ngày hôm nay. Tôi là Niko từ Axrisi. Gộp có trách nhiệm.

## Nguồn

- [Chacon](https://blog.gitbutler.com/git-3-sha-256) — blog.gitbutler.com
- [Git's official plan](https://git-scm.com/docs/BreakingChanges) — git-scm.com
- [Current interoperability](https://git-scm.com/docs/git-init) — git-scm.com
- [Transition design](https://git-scm.com/docs/hash-function-transition) — git-scm.com
- [Independent collision research](https://sha-mbles.github.io/) — sha-mbles.github.io
- [GitHub preview repository](https://github.com/bk2204/talk-rust-in-git) — github.com
- [Pi 1.0](https://earendil.com/posts/pi-1-0/) — earendil.com
- [Pi Durable](https://earendil.com/posts/pi-durable/) — earendil.com
- [SvelteKit 3](https://svelte.dev/blog/sveltekit-3-is-here) — svelte.dev
- [HN discussion](https://news.ycombinator.com/item?id=49924179) — news.ycombinator.com
