@levinzhang
2023-04-16T10:53:08.000000Z
字数 1577
阅读 281
by
最近,开源Git项目发布了最新的2.40版本,带来了一些新的特性和缺陷修复。这个版本值得关注的特性包括git jump工具的更新、cat-file工具的增强以及在Windows上更快的响应。
最近,开源Git项目发布了最新的2.40版本,带来了一些新的特性和缺陷修复。这个版本值得关注的特性包括git jump
工具的更新、cat-file
工具的增强以及在Windows上更快的响应。
GitHub的软件工程师Taylor Blau详细介绍了Git 2.40的更新细节。git jump
是contrib目录中的一个可选工具,现在支持Emacs和Vim。git jump
工具对Git命令进行了封装,比如git grep
,并将它们的结果输入的Vim的quickfix列表中。
如果你使用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规则。为了确定某个特定对象的大小,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
需要有一个索引,这使得它在裸仓库中很难使用。裸仓库是一个以.git
为后缀的目录,它没有任何版本控制文件的本地检出副本(在裸仓库中,所有通常存在于隐藏的“.git”子目录中的Git管理和控制文件都直接存在于“repository.git”目录中,而没有其他文件存在并被检出。——译者注)。在Git 2.40和更新的版本中,现在支持使用--source=
选项来扫描.gitattributes
,使其更易于在裸仓库中使用。
GitHub的推特账号发布了这些更新,这引起了推特上技术社区的关注。其中,有位推特用户Andrew转推了该公告,并这样引用到:“git jump 似乎相当有用! https://github.com/git/git/tree/v2.19.0/contrib/git-jump”
Git 2.40还包括一些功能增强,将Git旧的组成部分从Perl或Shell改写成现代C语言的等价方式。这使得Git命令在Windows等平台上运行得更快。现在,git bisect
已经以原生内置程序的方式以C语言进行了实现,而传统实现git add --interactive
已经废弃了。
在2.40版本中,Git的CI基础设施也有一些改进。一些长期运行的Windows专有CI构建已被禁用,为Git开发人员带来了更快、更节省资源的CI运行方案。