Git 2.40 发布,包括 git jump 工具的更新、cat-file 工具的增强以及提高 Windows 上响应速度
云知 · 3年前
最近,开源 Git 项目发布了最新的 2.40 版本,带来了一些新的特性和缺陷修复。这个版本值得关注的特性包括`git jump`工具的更新、`cat-file`工具的增强以及在 Windows 上更快的响应。
GitHub 的软件工程师[Taylor Blau](https://www.linkedin.com/in/ttaylorr/)详细介绍了 Git 2.40 的[更新细节](https://github.blog/2023-03-13-highlights-from-git-2-40/)。`git jump`是[contrib](https://github.com/git/git/tree/v2.40.0/contrib)目录中的一个可选工具,现在支持 Emacs 和 Vim。`git jump`工具对 Git 命令进行了封装,比如`git grep`,并将它们的结果输入的 Vim 的[quickfix](https://vimdoc.sourceforge.net/htmldoc/quickfix.html)列表中。
如果你使用 Emacs 的话,`git jump`可以通过`M-x grepgit jump --stdout grep foo`命令来生成一个位置列表。该命令将会输出项目中所有与“foo”匹配的内容,使其更容易进行导航。Git jump 也适用于`diff`和`merge`。
Git 的`cat-file`工具常用于打印 Git 仓库中任意对象的内容。从 Git 2.38.0 版本开始,`cat-file`工具支持在打印提交的内容时,使用 Git 的[mailmap](https://git-scm.com/docs/gitmailmap)规则。为了确定某个特定对象的大小,`cat-file`工具可以使用`--batch-check`和`-s`选项。但是,以前版本的 Git 在使用`cat-file`工具时,如果在使用`--use-mailmap`选项的同时,组合使用了`--batch-check`和`-s`选项,将会导致结果不正确。在 Git 2.40 中,这个问题得到了修正,现在`--batch-check`和`-s`选项会正确报告对象的大小。
`git check-attr`命令能够用来确定给定的路径设置了哪些`gitattributes`。这些属性是由仓库中的一个或多个`.gitattributes`文件所定义和设置的。对于复杂的规则或多个`.gitattributes`文件,请按照如下形式使用`check-attr` git 命令:
```
$ git check-attr -a git.c git.c: diff: cpp git.c: whitespace: indent,trail,space
```
在此之前,`check-attr`需要有一个索引,这使得它在[裸仓库](https://git-scm.com/docs/gitglossary/2.40.0#Documentation/gitglossary.txt-aiddefbarerepositoryabarerepository)中很难使用。裸仓库是一个以`.git`为后缀的目录,它没有任何版本控制文件的本地检出副本(在裸仓库中,所有通常存在于隐藏的“.git”子目录中的 Git 管理和控制文件都直接存在于“repository.git”目录中,而没有其他文件存在并被检出。——译者注)。在 Git 2.40 和更新的版本中,现在支持使用`--source=`选项来扫描`.gitattributes`,使其更易于在裸仓库中使用。
<br>
[GitHub的推特账号](https://twitter.com/github/status/1635339931949346816?s=61&t=CIFud503wZ5wc6mlfiwwsw)发布了这些更新,这引起了推特上技术社区的关注。其中,有位推特用户[Andrew](https://twitter.com/andrewdimola)转推了该公告,并这样[引用到](https://twitter.com/andrewdimola/status/1635340909499027456):
“git jump 似乎相当有用! [https://github.com/git/git/tree/v2.19.0/contrib/git-jump](https://github.com/git/git/tree/v2.19.0/contrib/git-jump)。”
<br>
Git 2.40 还包括一些功能增强,将 Git 旧的组成部分从 Perl 或 Shell 改写成现代 C 语言的等价方式。这使得 Git 命令在 Windows 等平台上运行得更快。现在,`git bisect`已经以原生内置程序的方式以 C 语言进行了实现,而传统实现`git add --interactive`已经废弃了。
<br>
在 2.40 版本中,Git 的 CI 基础设施也有一些改进。一些长期运行的 Windows 专有 CI 构建已被禁用,为 Git 开发人员带来了更快、更节省资源的 CI 运行方案。
<br>
**原文链接:**
[Open Source Git Project Releases Version 2.40](https://www.infoq.com/news/2023/04/git-releases-version-2-40/)
资讯来源:https://www.infoq.cn/article/tQjr79KiqeK88KgjhUJY
推荐资讯
-
对话无损的秘密:ThinkChat 的上下文优化之道
2026年06月11日
-
ThinkChat 空间知识库技能:让每个团队都拥有自己的"企业大脑"
2026年06月07日
-
ThinkChat IM频道上线——你随身超级工作助理
2026年06月07日
-
你的AI助理,终于能帮你"上网干活"了
2026年05月11日
-
ThinkChat 工作空间:让 AI 成为真正的团队成员
2026年05月07日
最新资讯
-
对话无损的秘密:ThinkChat 的上下文优化之道
2026年06月11日
-
ThinkChat 空间知识库技能:让每个团队都拥有自己的"企业大脑"
2026年06月07日
-
ThinkChat IM频道上线——你随身超级工作助理
2026年06月07日
-
你的AI助理,终于能帮你"上网干活"了
2026年05月11日
-
ThinkChat 工作空间:让 AI 成为真正的团队成员
2026年05月07日