最近,开源 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 运行方案。
原文链接:
领取专属 10元无门槛券
私享最新 技术干货