Git 2.35 发布

来源: OSCHINA
编辑: 罗奇奇
2022-01-25 07:56:00

Git 2.35 发布了,该版本包含来自超过 93 个贡献者的特性和错误修复,其中 35 个是新贡献者。

该版本的亮眼功能如下:

  • git stash拥有新的--staged模式,可以很容易地把放在暂存区的更改隐藏起来,以供以后复用。--staged 支持使用任何工具选择要隐藏的更改。【源代码】
  • git log 有一组丰富的 --format 选项,可以使用它们来自定义 git log 的输出。在修饰终端时会很方便,对于围绕 git log 的输出编写脚本更有帮助。【源代码】
  • Git 2.34 中引入的 SSH 密匙功能作了一些增强,Git 2.35 版本可以利用 OpenSSH 的 valid-before 和 valid-after 指令,确保正在验证的对象使用有效的签名进行签名。【源代码】 此外,Git 2.35 还支持 user.signingKey 配置中的新密钥类型,比如可以使用不以“ssh-”开头的密钥类型指定文字 SSH 密钥(如 ECDSA 密钥)。【源代码】
  • 在 Git 2.35 中,--histogram性能得到了很好的提升。【源代码】
  • 优化了用于处理合并冲突的的 merge.conflictStyle 设置,之前它有 “merge” 和 “diff3” 两种模式,Git 2.35 引入了一种新模式 “zdiff3” ,这个模式会将冲突部分前后相同的代码行移走。举个例子:

假设有一个带有占位符注释的列表,我们合并了两个分支,每个分支都添加不同的内容来填充占位符:

1,
foo,
bar,
<<<<<<< HEAD
=======
quux,
woot,
>>>>>>> side
baz,
3,

使用 diff3 模式的冲突标记会则会显示合并基础和双方的全部内容:

1,
<<<<<<< HEAD
foo,
bar,
baz,
||||||| 60c6bd0
# add more here
=======
foo,
bar,
quux,
woot,
baz,
>>>>>>> side
3,

请注意,双方都在开头添加“foo”和“bar”,在末尾添加“baz”。那么,当我们使用 zdiff3 模式的冲突标记,则会将“foo”和“bar”完全移出冲突区域,让合并结果更准确(包括合并基础)也更简洁(处理了合并冲突的冗余部分)

【源代码】

  • 在 Git 2.35 中,git jump merge学习了如何使用路径规范来缩小合并冲突的范围。因此,如果你正在解决一个大的合并冲突,但只想处理特定部分,可以运行:
$ git jump merge -- foo

【源代码】

  • Git 2.35 继续努力标准化正确的size_t类型来表示对象长度,使得过滤器可以处理大于 4GB 的文件。【源代码】
  • 可以使用 --empty=<stop|drop|keep> ,指定 git am 在遇到空提交时的行为方式。【源代码】
  • 在 Git 2.34 中,稀疏索引被集成到少数命令中,包括 git status、git add 和 git commit。 在 2.35 中,对稀疏索引的命令支持增加到包括 git reset、git diff、git blame、git fetch、git pull 和新模式 git ls-files 的集成。[source, source, source]
  • Reftable 提高具有大量引用的存储库的读写性能。将 reftable 的实现引入 Git 的工作已经进行了很长时间,Git 2.35 附带了 reftable 后端的初始导入,但因为新的后端还没有与 refs 集成,所以还不能开始使用 reftable。

除上述改动外,Git 2.35 还包含其他更新项,可在更新公告中查看更多细节。 

展开阅读全文
1 收藏
分享
0 评论
1 收藏
分享
返回顶部
顶部
返回顶部
顶部