Git 2.8 改进子版本库、身份处理和 Windows 支持

  • Sergio De Simone
  • 谢丽

2016 年 3 月 31 日

话题:语言 & 开发

近日发布的 Git 2.8 带来了许多新特性、改进和 Bug 修复。其中,最值得注意的是子版本库并行获取、Git 用户身份处理方式改进以及更好的 Windows 支持。

子版本库并行获取允许一次获取多个版本库,旨在减少获取版本库及其所有相关子版本库所需的时间。这可以通过使用新增的--jobs选项来实现,例如:

git fetch --recurse-submodules --jobs=4

据 Git 团队介绍,对于包含许多子版本库的版本库,这可以大大增加更新速度。当使用--recurse-submodules而不带新增的--jobs选项时,Git 会逐个获取子版本库。

对于希望针对不同的项目(比如工作项目和开源项目)使用不同的身份标识的开发人员而言,全局配置选项将是一个受他们所有人欢迎的新特性。当没有使用配置选项user.nameuser.email显式指定身份时,该特性会禁用 Git 推测提交者身份的默认行为。在这种情况下,Git 默认推测提交者身份的行为可能会导致将错误的身份用于新版本库。另一方面,设置新增选项user.useconfigonly,即

git config --global user.useconfigonly true

将使 Git 在开发人员向新版本库提交但没有明确指定身份时发出警告,强制他们提供一个明确的身份用于那个版本库访问。

有一个相关的变化旨在让用户更容易了解特定设置定义的位置,是系统级,用户级,还是版本库级。实际上,开发人员现在可以使用:

git config --show-origin <setting name>

显示特定设置的来源位置。

Git 2.8 还有一个目标是改进它同 Windows 的集成,措施如下:

  • 使用 C 重写了许多 Git 命令,让它们的运行速度更快;
  • it-for-Windows分支合并了若干特定于 Windows 的更改;
  • 可以识别 CRLF 及 LF 行结束符。

此外,Git 2.8.0 修复了一个整数溢出安全漏洞,该漏洞可能导致在克隆恶意版本库时任意代码的执行。对于以前的 Git 版本,包括 2.4.11+、2.5.5+、2.6.6+、2.7.4+,也已经提供了补丁。

Git 2.8 中其它有用的新新特性包括:

  • git ls-files --eol <filename>可以帮助诊断行结束符相关的问题;
  • git pull --rebase现在可以使用rebase -i激活历史改写。

要查看 Git 2.8 的完整更新列表,请点击这里

查看英文原文:Git 2.8 Adds Improvements to Submodules, Identity Handling, and Windows Support

语言 & 开发