首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Git 2023年第一个新版2.40发布

git jump是git中自带的一个鲜为人知的可选功能,那么在今天的功能介绍中,我们首先来介绍git jump。git jump打包了其他git命令,例如git grep并将其的结果呈现一个quickfix列表。比如用git jump grep git就可以在vim展现项目中所有匹配git的列表导航。

除了grep,jump也可以用于diff和merge命令。在diff情况下时会展示仓库中各个更改块的开头,可以快速查看所做的变更。而git jump merge, 则会在vim中打开合并冲突列表。

在Git 2.40 中, git jump除了Vim,现在也可以设置为Emacs,这样可以使用git jump将位置列表呈现在Emacs中。对于Emacs用户,这是一个福音,要设置为Emacs可以通过:

M-x grepgit jump --stdout grep git

cat-file

如果写过git库相关信息的脚本,你可能会熟悉git的cat-file工具,用来可用于给出仓库中任意块对象的内容。如果你不在意这个块的内容,而只是想知道他占用的空间,则可能需要

--batch-check=%(objectsize),或者-s。

但是在早先的版本中--batch-check和 -s选项 git cat-file和--use-mailmap,当邮件映射重写两侧的名称/电子邮件对长度不同时,可能会导致不正确的结果。 在2.40版本中,该问题已得到纠正,并且git cat-file -s和--batch-checkwith 可以用来计算块对象大小。

check-attr

这可能是另一个鲜为人知的git命令。check-attr用于确定哪个gitattributes为给定路径设置。

这些属性由一个或多个定义和设置.gitattributes存储库中的文件。对于简单的示例,很容易从 .gitattributes文件,像这样:

head -n 2 .gitattributes

* whitespace=!indent,trail,space

*.[ch] whitespace=indent,trail,space diff=cpp

在这里,很容易看出任何以*.c或者*.h将具有上面设置的属性。但是当有更复杂的规则在起作用,或者项目使用多个时会发生什么? .gitattributes文件? 对于这些任务,可以使用 check-attr:

git check-attr -a git.c

git.c: diff: cpp

git.c: whitespace: indent,trail,space

在过去版本中,一个关键的限制是check-attr的使用需要一个索引 ,这样如果想在无本地文件的裸存储中使用check-attr,则需要建立临时读取索引,如下所示:

TEMP_INDEX="$(mktemp ...)"

git read-tree --index-output="$TEMP_INDEX" HEAD

GIT_INDEX_FILE="$TEMP_INDEX" git check-attr ...

在Git 2.40中,check-attr支持新的--source=扫描.gitattributesin,这样上述操作,只需:

git check-attr -a --source=HEAD^ git.c

git.c: diff: cpp

git.c: whitespace: indent,trail,space

用c重写的bisect

多年来,开发社区一直在努力将Git中的一些Perl或Shell实现的功能用C来重写。除了能够在本地使用Git自己的API之外,将Git命令整合到一个进程中意味着它们能够在进程启动成本高的平台(例如 Windows)上更快地运行。

在2.40版本中有几个命令已经完全用c重写:

其中一个就是git bisect现在作为本机内置函数在C中完全实现。

其他更新

另外其他一些需要值得提及的还有一些。比如git CI基础设施有一些底层改进。 Git有一些长期运行的特定于Windows的CI构建已在新版本中禁用(git-for-windows)。 直接带来的后果就是可以提高CI运行的效率,并且每次推送的资源也更少。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230315A011WK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券