Magit 4.6 发布
摘要
Magit 4.6,Emacs 上流行的 Git 界面,已发布,改进了浏览 blob 的缓冲区,并在差异中增加了实验性的语法高亮。
<p><a href="https://lobste.rs/s/wbpoiy/magit_4_6_released">评论</a></p>
查看缓存全文
缓存时间: 2026/07/04 00:29
# Emacsair!Magit 4.6 发布
来源:https://emacsair.me/2026/07/01/magit-4.6/
关于 (https://emacsair.me/about) 文章 (https://emacsair.me/) RSS (https://emacsair.me/feed.xml) Mastodon (https://fosstodon.org/@tarsius) Bluesky (https://bsky.app/profile/tarsius.bsky.social) Github (https://github.com/tarsius)
## E (https://emacsair.me/)macsAir
#### 积累频繁提交里程
我很兴奋地宣布 Magit 4.6 版本的发布,自半年前的上一个版本以来,共有 313 次提交。发布说明可以在此处找到:https://github.com/magit/magit/blob/main/docs/CHANGELOG.4#v460----2026-07-01
## 这就是 Magit!Emacs 中的 Git 界面
Magit 是一个基于文本的 Git 用户界面,无与伦比地专注于简化工作流程。命令通过简短助记键序列调用,这些键序列考虑了高度可操作界面中光标的位置,以提供上下文相关行为。
使用 Magit,您可以完成几乎在使用命令行 Git 时能做的所有事情,但速度更快,同时利用以前看似过于复杂而无法日常使用的高级功能。许多用户会发现,使用 Magit 可以成为更高效的 Git 用户。
关于 Magit 的更多信息,请访问 https://magit.vc/ 和这些博客文章 (https://emacsair.me/2017/09/01/campaign-articles)。
请考虑赞助 (https://magit.vc/donate) 我的工作。*谢谢!— Jonas Bernoulli*
使用 Github Sponsors 赞助我的工作 (https://github.com/sponsors/tarsius/) 使用 Liberapay 赞助我的工作 (https://liberapay.com/magit/) 使用 Open Collective 赞助我的工作 (https://opencollective.com/magit/) 使用 PayPal 赞助我的工作 (https://magit.vc/donate/paypal.html)
## Blob 改进
本版本的主要焦点是 blobs 访问缓冲区。目前希望大多数用户会发现使用这类缓冲区的体验略有改善,尽管他们可能不会意识到有什么变化。目标是偿还技术债务并为未来的变化做准备。
- 现在访问 blobs 始终涉及 `magit-find-file-noselect`,即使可能涉及现有缓冲区。该函数的行为越来越接近 `find-file-noselect`。
- 实现了对访问 blobs 的支持,以利于语法高亮等功能,而不是用户显式访问。这种“易失性”blob 缓冲区被隐藏并缓存一段时间,以防再次需要。如果用户访问了隐藏的缓存 blob,缓冲区会被重命名以显示它,并且不再受垃圾回收的影响。
- Blobs 现在可以仅通过 blob 对象 ID 访问(而不是通过修订版本和路径)。
- Blob 访问缓冲区现在可以通过 `g` 回退,这在缓冲区通过例如分支(而非修订版本或 blob 对象 ID)访问时很有用。如果 blob oid 没有变化,缓冲区不会不必要地刷新。
- 改进了从访问 blob 或文件的缓冲区跳转到另一个 blob 中相同位置的支持。
## 实验性的差异语法高亮
- 现在可以为差异启用语法高亮。默认情况下禁用此功能,因为该工作仍然是同步执行的,这会导致大型差异出现明显延迟,即使较小的差异也可能变得缓慢。未来的版本将添加对异步差异语法高亮的支持。(本版本添加的 blob 缓冲区缓存确实有所帮助,但还不够。)配置 `magit-diff-fontify-hunk` 即可尝试此功能,但如果它仍然太慢,请再次禁用它。如果启用此功能,还应该自定义新选项 `magit-diff-specify-hunk-foreground`,可能还要自定义新选项 `magit-diff-use-indicator-faces`。
## 改进的 Git 钩子到 Elisp 钩子桥接
- 现在使用新的 Git 变量 `hook.NAME.event` 和 `hook.NAME.command` 从 Git 钩子调用 Elisp 钩子。在等待这种功能二十年之后,我得出结论这永远不会被实现,并最终在上一版本中添加了一个笨拙的临时方案来实现相同的功能。当然,仅仅一个版本之后,Git 就添加了缺失的功能 😝。我们现在使用 Git 的变量,这意味着现在只有在使用 Git v2.54.0 或更高版本时,才能从 Git 钩子调用 Elisp 钩子。
- 添加了对编译 diff 中修改的定义列表的支持,以及在编写提交消息时插入此类列表的支持。新命令 `git-commit-insert-changelog-gnu` 和 `git-commit-insert-changelog-plain` 插入此类列表,可以从用于插入提交尾注的同一菜单(`C-c C-i`)调用。
- 编写提交消息时,`complete-symbol` 现在会根据修改的定义和修改行中出现的符号进行补全。
*谢谢!— Jonas Bernoulli*
发布于 2026 年 7 月 1 日
相似文章
离开 Magit 后的 Emacs
作者讲述了他们离开 Emacs 的 Magit Git 界面,转而采用 VC-mode 和自定义 Git 脚本等替代方案的经历,重点介绍了其中的调整和所学到的经验教训。
Git 2.54 亮点速览
Git 2.54 带来全新的实验性 `git history` 命令,可在不碰工作区的情况下重写或拆分提交,另有 137 位贡献者带来的其他改进。
@github: Git 2.55 带来了新的增量重新打包策略、更灵活的历史编辑方式,以及更多功能。查看…
Git 2.55 已发布,引入了使用多包索引的增量重新打包策略、更灵活的历史编辑方式,以及来自超过100位贡献者的贡献。
Gram 2.0.0 发布
Gram 2.0.0 是一款面向开发者的代码编辑器,现已发布,带来了更新的默认设置、改进的语言服务器管理、平滑滚动以及 Markdown 预览中的 Mermaid 图表支持。
@sashimikun_void: https://github.com/nkzw-tech/codiff… 酷炫的代码差异查看器,顺便一提……
Codiff 是一个美观的本地差异查看器,适用于 Git 仓库,具有基于大语言模型的代码讲解和行内审查评论功能,旨在简化提交前的代码审查流程。