开源 Git 项目在超过104名贡献者提供的功能改进和错误修复的基础上发布了 Git 2.56.0;其中39名贡献者是首次参与该项目。上一个版本是 Git 2.55。
新版本提供了 `git add –resolved` 选项,可在解决合并冲突时仅暂存相关路径。该模式会检查索引中的未合并路径,并在暂存前检查普通文件中残留的冲突标记。如果发现标记,它会报告相关路径,但不会修改索引。这样一来,`notes.txt` 等与冲突无关的本地更改不会被暂存,而已解决的 `recipe.txt` 则可以被暂存。还可以通过路径模式缩小选择范围;如果所选文件中有任何一个包含标记,则一个文件都不会被暂存。已解决的删除和二进制冲突会按正常方式处理。该选项不能与 `git add -u` 或 `git add -A` 合并使用,并会忽略此前未发生冲突的已跟踪文件。
Git 2.56 还加快了寻找共同祖先的操作。Git 从两个提交点向后遍历,以查找双方都可访问的合并基点。由于交叉合并可能需要多个基点,搜索会持续到确定所有基点为止。新的跟踪机制能够在某一方特有的待处理提交耗尽时,判断不会再产生新的共同点,并在保留所有合并基点的同时停止搜索。
为什么重要
新的暂存模式使遇到合并冲突的开发者能够将已完成解决的文件单独暂存,而不会将其与本地更改混在一起;对于在同一工作目录中进行不同编辑的团队而言,这尤其有助于降低出错风险。对冲突标记的检查提供了额外的控制,可防止未完成的内容被意外暂存。共同祖先搜索的改进则影响了 Git 在包含多分支和交叉合并的仓库中获取必要历史信息的方式。因此,该版本不仅提供了一个新命令,还着眼于复杂历史中的操作行为。不过,这些更改将在多大程度上被不同工作流采用,以及性能提升会在哪些仓库中变得明显,仍有待观察。