与之前版本相比,新版本包含 544 处变更,由 78 名开发人员参与准备,其中 21 名开发人员首次参与开发。
- 添加了对配置宏的支持,通过它您可以在不同的设置集之间快速切换,而无需详细了解与其关联的特定选项。 在宏的帮助下,无需记住需要更改哪些设置来激活这个或那个功能。 例如,如果大型存储库速度很慢,您可能需要切换到新的索引引擎,启用路径前缀压缩,并通过将 index.version 设置为 4 并启用 core.untrackedCache 来启用未跟踪文件缓存。 宏使您不必浪费时间在文档中搜索正确的解决方案,而是立即激活具有大量文件的存储库的优化设置:
git config feature.manyFiles true
- 默认情况下启用的是以提交图(commit-graph)形式存储对象,其中不是链接到其他对象的对象哈希的线性列表,而是使用图形式的结构进行索引。 如果以前,为了确定包含某个修复程序的版本,需要从磁盘加载每个对象来搜索链接,那么当以图形形式存储时,您可以立即确定所有必要的链接。 在 Linux 内核和 Git 存储库中切换到以提交图形式存储使我们能够将分支操作的性能提高几乎两倍。 要在升级到 Git 2.24 后启用新的存储方法,您必须运行命令“git gc”。
在与 commit-graph 相关的更改中,我们还注意到 commit-graph 相关命令(“git commit-graph write”、“git commit-graph verify”等)中操作进度指示器的实现已被引入与其他命令的通用形式。.)。 现在默认情况下仅为终端显示进度指示器(使用“-[no-]progress”选项更改行为)。 此外,还添加了一个新的配置参数 fetch.writeCommitGraph,它可以在“git fetch”操作期间使用提交图自动更新文件(从外部存储库检索的所有提交将立即转到提交图,而无需单独运行 auto-gc);
- 添加了覆盖更改历史记录的命令 - ”
git 过滤器仓库 “,这是命令的更简单的替代方案”git 过滤分支 » 对存储库中的更改历史记录执行操作(例如,从存储库中删除文件或检索特定目录的更改历史记录)。 为了提高效率,git filter-repo 以连续流的形式对历史表示执行操作,而不是按顺序提交解析。历史过滤是使用“-path-{glob,regex}”选项执行的,该选项允许您使用简单的掩码和正则表达式。 还有一些选项可以执行搜索并替换或清理大于指定大小的二进制对象。 每个重写的提交都会提供一个新的 SHA-1 哈希标识符,并且对替换提交的所有引用都会根据新标识符进行更新。
要显示有关存储库的统计信息摘要(按类型划分的对象数量、最大文件和目录、哪些扩展需要更多磁盘空间等),提供了“-analyze”选项。 为了扩展功能,可以在Python中连接任意回调处理程序,通过它您可以创建新的子命令并处理各种事件(例如,新的文件类型);
- 添加了“--end-of-options”选项以将选项与链接名称分开,链接名称可以以“-”字符开头并被视为选项(“git log --end-of-options -super-dangerous-option” )。 如果在日常生活中,这些名称可以转义为“git log 'refs/heads/—super-dangerous-option'”,那么脚本在定义命名空间时可能会出现问题。 普遍接受的分隔符“ - ”在这种情况下不适用,因为它已经用于分隔链接名称和文件(例如,“git log —end-of-options —super-dangerous-option ^master — path/to /文件”);
- 在“git rebase --rebase-merges”中添加了“--strategy”和“--strategy-option”选项以进行选择
合并策略 ; - 添加了一个新的“.git/hooks/pre-merge-commit”处理程序,该处理程序在合并完成后但在写入结果提交之前调用;
- 命令完成引擎中添加了对完成与特定命令设置相关的配置变量的支持。
例如,如果您需要输入“git -c core.autocrlf=false add path/to/my/file”,但不记得“core.autocrlf”变量的确切名称,您可以按 Tab 并得到一个暗示。
此外,Git 开发人员
来源: opennet.ru