Git 2.45 的亮点

Git 2.45 的亮点

💡 原文英文,约2500词,阅读约需9分钟。
📝

内容提要

Git 2.45 引入了 reftable,这是一种新的引用存储后端,用于更快的查找和写入。它还增加了对 SHA-1 和 SHA-256 互操作性的初步支持。其他功能包括调试缺失对象、显示可用的 reflog、配置差异输出前缀、自定义提交消息模板,以及 git cherry-pick 的 --empty 选项。

🔎

延伸解读

reftable 的适用场景与限制

reftable 主要针对引用数量庞大的仓库,如 Gerrit 等场景,能实现近乎常量时间的引用查找和原子更新。但对于大多数普通仓库,现有引用后端已足够,且 reftable 目前仅为初步支持,可能尚未完全稳定。用户可通过 git init --ref-format=reftable 体验,但生产环境需谨慎评估。

SHA-1 与 SHA-256 互操作性的现状

Git 2.45 引入了“兼容性”对象格式,允许在 SHA-256 仓库中通过 --output-object-format=sha1 获取对象的 SHA-1 哈希,为未来互操作奠定基础。但该功能仍为实验性,许多特性可能无法按预期工作,完整互操作仍需后续版本完善。

调试缺失对象与 reflog 查看的改进

此前若可达性查询的起点对象缺失,git rev-list 会直接报错。Git 2.45 允许在起点缺失时继续调试,输出缺失对象。同时新增 git reflog list 命令,无论是否使用 reftable,都能列出哪些引用有对应的 reflog,方便排查引用历史。

配置与工作流的小幅增强

Git 2.45 允许自定义 diff 输出前缀(diff.srcPrefix 和 diff.dstPrefix),便于区分变更前后或支持终端超链接。提交消息模板的注释字符现在支持多字节字符或任意字符串。git config 新增 --comment 选项,可在配置行尾添加注释。git cherry-pick 新增 --empty 选项,统一处理空提交,避免重复输入命令。

❓

Q&A

Git 2.45 引入了什么新功能?

Git 2.45 引入了 reftable 作为新的引用存储后端,提供更快的查找和写入速度,并增加了对 SHA-1 和 SHA-256 互操作性的初步支持。

reftable 格式有什么优势?

reftable 格式支持近乎常量时间的引用查找和验证,支持多个 *.ref 文件,且更新效率高,适合存储大量引用。

如何在 Git 2.45 中调试缺失对象?

在 Git 2.45 中,可以使用 git rev-list --missing=print 命令调试缺失对象,即使查询的顶端引用本身缺失也能进行调试。

Git 2.45 如何支持 SHA-1 和 SHA-256 的互操作性?

Git 2.45 引入了兼容对象格式,允许用户通过兼容哈希引用对象,支持在不同哈希函数之间的互操作。

如何自定义 Git 提交消息的注释字符?

在 Git 2.45 中,可以通过设置 core.commentString 来自定义提交消息的注释字符,支持多字节字符或任意字符串。

git cherry-pick 在 Git 2.45 中有什么新选项?

在 Git 2.45 中,git cherry-pick 新增了 --empty 选项,允许用户指定如何处理空提交,简化了操作流程。

🏷️

标签

➡️

继续阅读