Git 2.19 对Diff、Branch和Grep等做了改进
Git的最新版带来了丰富的新功能以及内部更新,包括改进的diff、branch和grep,更好的命令行补全,新的range-diff命令等。 Git diff现在可以正确地标记以intent-to-add参数添加的新文件路径。intent-to-add可以和git add命令一起使用,完整写法即git add –intent-to-add<文件名>,以给工作树添加一个空文件。
这很有用,这样git diff可以在其输出中展示新文件的完整内容。但是之前,diff中的文件路径没有被标记成新的。在一份相关说明提到,apply命令也改进了其对intent-to-add选项的处理。
事实上,现在在应用补丁时,给索引添加新路径只影响到用intent-to-add添加了所有新文件的工作树。回过来看diff,color-moved选项已经扩展为支持新的color-moved-ws变体,它专门制作git diff移动的彩色行,而其他未改变则显示空白。
Git 2.18中类似的功能是利用color-moved和ignore-space-change来实现的,尽管后一个选项将被应用于整个输出,而不只是移动的行。 Git grep有了两个新选项:列(column),它给输出添加第一个匹配的列号;以及唯一匹配的(only-matching),它限制输出为正则表达式的匹配部分,而不是整个匹配行。
Git 2.19用两种方式改进了git branch列表。首先,git branch –list现在从branch.sort配置变量读取其默认排序选项,与git tag –list从tag.sort中获取其默认排序选项类似。此外,git branch的-l选项(它是-create-reflog的简写)已经被弃用,以防止开发人员无意中把它当做-list的别名使用。
自2.6版本开始,Git提供git fsck命令以检查被推送到存储库的对象的完整性。这项测试可以在接收端执行,并用receive.fsck.*变量进行配置。例如,如果因为zero-padded文件模式定义receive.fsck.zeroPaddedFilemode变量导致fsck失败的话,您可以让Git拒绝推送。Git 2.19利用fetch.fsck.*变量,为git fetch提供相似的功能。
在实现方面,git子模块foreach用C进行了重写,性能因此得到了改进。此外,对命令行补全的支持也得到了改进,现在会列出子命令所用的配置变量列表和包括带-no-前缀的选项。git fetch命令支持新的-negotiation-tip选项以减少返回的提交集。当本地存储库具有在远程历史记录中不存在的大量引用时,这能提高带宽和性能。
在开发方面,Git 2.19已经禁用strcat,这被认为太危险了,现在会引起编译失败。
还有很多Git 2.19中的新功能我们没有在这里进行介绍。如果您有兴趣了解全部的细节,请别错过官方发布说明。
本文文字及图片出自 InfoQ
你也许感兴趣的:
- 理解 git blame:一篇简介
- 【外评】为什么 Facebook 不使用 Git
- 【外评】Git 的故事:这次没那么有趣
- 【程序员搞笑图片】最刺激的话
- BitKeeper、Linux 和许可纠纷:Linus 如何在 14 天内写出 Git
- 【程序员搞笑图片】Git 音乐播放清单
- 您应该使用的现代 Git 命令和功能
- 在版本控制方面,我们能做得比 Git 更好吗?
- Git 2.40 发布,包括 git jump 工具的更新、cat-file 工具的增强以及提高 Windows 上响应速度
- 告别SVN,Git成“独苗”:GitHub 在 13 年后宣布淘汰Subversion支持
你对本文的反应是: