# Git 的新哈希默认值 – 这意味着什么

Published: 2026-10-02

Git 提议的 SHA-256 默认值将为新存储库创建兼容性边界。我们审查了官方计划、Scott Chacon 的反对意见和正在运行的 GitHub 预览例外，然后介绍了 Pi 1.0 和 SvelteKit 3。结论：NEEDS REVIEW。

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

## 本视频涵盖的内容

- 为什么两个 Git 存储库会拒绝通信？
- Git 3 到底改变了什么？
- 如果 Git 检测到冲突，为什么还要替换 SHA-1？
- 我们的本地兼容性检查显示了什么？
- Pi Durable 中，什么能在崩溃中幸存下来？

## 章节

- 0:00 为什么两个 Git 存储库会拒绝通信？
- 0:34 Git 3 到底改变了什么？
- 0:58 如果 Git 检测到冲突，为什么还要替换 SHA-1？
- 1:51 我们的本地兼容性检查显示了什么？
- 2:49 Pi Durable 中，什么能在崩溃中幸存下来？
- 3:30 SvelteKit 3 为您迁移了什么？
- 4:03 GitHub 的运行例外证明了什么？
- 4:38 为什么我的结论取决于整个工具链？

## 翻译的文字记录

译自英文原版旁白。可用音频和字幕由 YouTube 控制。

### 为什么两个 Git 存储库会拒绝通信？

0:00 您可能会认为升级 Git 可以让您的工具保持通信。 Git 计划中的新哈希默认值创建的存储库与当今的旧格式 无法通信。 在这个视频中，为什么会改变？ 什么会中断？谁准备好了？ GitHub 上已经有一个正在运行的例外。 我将在最后向您展示它证明了什么。 今天是 10 月 2 日星期五，这里是 The Daily Diff。

0:18 星期四，一位 GitHub 联合创始人称 Git 计划中的改变是一个代价高昂的错误。 Pi 发布了一个新的代理程序，SvelteKit 发布了另一个迁移。 Scott Chacon 帮助构建了 GitHub 并编写了 Pro Git，所以这个抱怨来自 内部。 这家公司还出售 Git 工具。 首先，实际计划。

### Git 3 到底改变了什么？

0:35 一旦库和托管服务准备好支持，Git 3 将默认新存储库为 SHA-256， 一旦库和托管服务准备好支持它。 官方文档没有给出发布日期，并继续支持 SHA-1。 当您升级可执行文件时，您现有的存储库不会神奇地改变格式。 在您的群聊安排紧急迁移之前，这值得记住。 这个戏剧是一个提议的默认值， 截止日期目前是一个空白日历。

### 如果 Git 检测到冲突，为什么还要替换 SHA-1？

0:58 为什么要改变？ Git 通过哈希对象内容来命名对象。 文件输入到树中，提交引用树和更早的提交。 这为您提供了整个历史的完整性。 更改哈希方案，对象名称也会更改， 包括存储在其他对象中的引用。 Chacon 回溯到 Git 的创建者 Linus Torvalds， 他认为可信

1:17 分发很重要。这是一个历史立场，Linus 在 2005 年选择了 SHA-1。 在 2005 年。 自那时以来，安全情况已经发生了变化。 研究人员在 2017 年演示了 SHA-1 冲突， 后来又演示了针对 PGP 身份证书的 Chosen Prefix 攻击。 现代 Git 通过强化的 SHA-1 检测已知的冲突攻击。 其维护者也希望防范未来的攻击， 这是对签名的一种合理期望。

1:41 Chacon 认为生态系统成本太高，安全性太低。 他建议对树内容的单独强校验和进行签名， 同时保持现有的对象寻址方式。 什么会中断？我在本地创建了两种格式并哈希了相同的小文件。

### 我们的本地兼容性检查显示了什么？

1:54 一个对象名称有 40 个十六进制字符，另一个有 64 个。 然后我尝试在它们之间进行抓取。 我安装的 Git 拒绝了它，因为它算法不匹配， 这正是当前官方手册中描述的兼容性差距。 这使用了我旧的已安装的 Git，所以它告诉我们今天的边界。 称之为对未发布的 Git 3 的测试将是创造性会计。 迁移工作涉及假设哈希长度的脚本， 以及链接到对象名称的系统。

2:19 重新哈希历史需要这些身份之间的映射。 Git 的过渡设计包括该映射和签名处理。 实施准备情况很重要，因为设计文档不会升级您最喜欢的开发工具中隐藏的库。 库隐藏在您最喜欢的开发工具中。 这就是 Chacon 论点中的人力成本。 每个工具维护者都会得到另一个兼容性工作， 而用户发现他们的版本控制现在需要版本控制。 目前，在为项目选择新格式之前，请测试您的主机和工具。

2:44 现有团队可以在生态系统赶上之前保持其当前格式。 同时，Pi 达到了 1.0。

### Pi Durable 中，什么能在崩溃中幸存下来？

2:51 它是 Earendil 的一个编码代理程序，通过 Codemode 支持原生 MCP， 并且在需要时加载工具。 团队称极简主义是重点。 如果您的代理设置已经类似于一个小政府， 在需要之前将工具从提示中移除听起来像是行政改革。 它还发布了 Pi Durable，一个独立的实验性框架。 任务保存检查点，以便重新启动的进程可以从持久存储中继续未完成的工作。 持久存储。关键细节是工具重放。

3:16 被崩溃中断的工具仅在其声明安全时才重新运行。 否则模型会被告知它被中断了。 当工具可以花钱时，这是一个有用的边界。 我希望助手记住我的 购物清单，而不是通过 购买两次来庆祝崩溃。

### SvelteKit 3 为您迁移了什么？

3:30 SvelteKit 3 也在星期四发布，将配置移至 Vite，并将 $lib 替换为 #lib， 并使用标准包子路径导入。 迁移命令会重写它能重写的部分，并为其余部分留下待办事项列表。 您的机器人可以提供帮助，您的差异仍然值得阅读。 公告甚至为剩余部分招募了您的机器人朋友。 我们正在达到这样一个程度：框架升级会提供作业和一个建议的代课老师。 建议的代课老师。 远程函数仍需要实验性的 Async Svelte。

3:56 一个主要版本号令人放心，但单个功能带有自己的成熟度标签。 成熟度标签。检查您实际使用的那些。

### GitHub 的运行例外证明了什么？

4:03 那么谁为 Git 的新格式做好了准备？ 这是那个例外。 一个包含 Brian Carlson 演讲的公共 GitHub 存储库已经返回一个 完整的 SHA-256 对象名称。 我直接检查了公共远程。 演讲幻灯片称支持为私人预览，并表示存储库创建仍在进行中。 仍在进行中。等候室后面有实际进展。 这证明 GitHub 可以提供此预览存储库。

4:24 它不能保证普通的项目创建或您的所有集成都已准备就绪。 集成已准备就绪。 例外具有权限边界。 如果您宁愿阅读而不是听我说，那么 The Daily Diff 每天早上免费发送到您的收件箱， 每天早上免费发送到 thedailydiff.dev，链接如下。 所以今天的结论是 NEEDS REVIEW。

### 为什么我的结论取决于整个工具链？

4:40 我将保留更强的哈希选项，并在更改默认值之前测试整个工具链。 兼容性是提供安全改进的一部分。 这就是今天的 The Daily Diff。 我是 Axrisi 的 Niko。 负责任地合并。

## 来源

- [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
