English ▾ 主题 ▾ 最新版本 ▾ git-commit-graph 上次更新于 2.46.0

NAME

git-commit-graph - 写入并验证 Git 提交图文件

概要

git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]
git commit-graph write [--object-dir <dir>] [--append]
			[--split[=<strategy>]] [--reachable | --stdin-packs | --stdin-commits]
			[--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress]
			<split-options>

描述

管理序列化的提交图文件。

选项

--object-dir

使用给定的目录作为 packfile 和提交图文件的位置。 此参数用于指定一个备用位置,该位置仅包含 objects 目录,而不是完整的 .git 目录。 提交图文件应位于 <dir>/info 目录中,而 packfile 应位于 <dir>/pack 中。 如果该目录无法转换为绝对路径,或者与任何已知的对象目录不匹配,则 git commit-graph ... 将以非零状态退出。

--[no-]progress

显式打开/关闭进度。 如果未指定任何一个,则当标准错误连接到终端时会显示进度。

命令

write

基于 packfile 中找到的提交写入一个提交图文件。 如果配置选项 core.commitGraph 已禁用,则此命令将输出一个警告,然后返回成功,但不写入提交图文件。

使用 --stdin-packs 选项,仅通过遍历指定 pack-index 中的对象来生成新的提交图。(不能与 --stdin-commits--reachable 组合使用。)

使用 --stdin-commits 选项,通过遍历从 stdin 中指定的提交开始的提交来生成新的提交图,stdin 中以十六进制 OID 列表的形式,每行一个 OID。 解析为非提交的 OID(直接或通过剥离标签)将被静默忽略。 格式错误或不存在的 OID 将生成错误。(不能与 --stdin-packs--reachable 组合使用。)

使用 --reachable 选项,通过遍历从所有引用开始的提交来生成新的提交图。(不能与 --stdin-commits--stdin-packs 组合使用。)

使用 --append 选项,包括现有提交图文件中存在的所有提交。

使用 --changed-paths 选项,计算并写入关于提交及其第一个父级之间更改的路径的信息。 在大型存储库上,此操作可能需要一段时间。 它为使用 git log -- <path> 获取目录或文件的历史记录提供了显着的性能提升。 如果给出了此选项,则将来的提交图写入将自动假定 intended 此选项。 使用 --no-changed-paths 停止存储此数据。

使用 --max-new-filters=<n> 选项,最多生成 n 个新的 Bloom 过滤器(如果指定了 --changed-paths)。 如果 n-1,则不强制执行限制。 只有新层中存在的提交才会计入此限制。 要追溯计算早期图层上的 Bloom 过滤器,建议使用 --split=replace。 覆盖 commitGraph.maxNewFilters 配置。

使用 --split[=<strategy>] 选项,将提交图写为存储在 <dir>/info/commit-graphs 中的多个提交图文件的链。 根据策略和其他拆分选项合并提交图层。 新的尚未在提交图中的提交将添加到新的“tip”文件中。 如果满足以下合并条件,则将此文件与现有文件合并

  • 如果指定了 --split=no-merge,则永远不会执行合并,并且其余选项将被忽略。 --split=replace 将用新的链覆盖现有链。 裸 --split 推迟到其余选项。(请注意,合并提交图链会将现有链替换为长度为 1 的链,其中第一个也是唯一的增量包含整个图)。

  • 如果未指定 --size-multiple=<X>,则让 X 等于 2。如果新的 tip 文件将具有 N 个提交,而之前的 tip 具有 M 个提交,并且 X 乘以 N 大于 M,则将两个文件合并为一个文件。

  • 如果指定了 --max-commits=<M>,其中 M 是一个正整数,并且新的 tip 文件将具有超过 M 个提交,则将新的 tip 与之前的 tip 合并。

    最后,如果未指定 --expire-time=<datetime>,则让 datetime 为当前时间。 写入拆分提交图后,删除所有未使用的修改时间早于 datetime 的提交图。

verify

读取提交图文件并根据对象数据库验证其内容。 用于检查损坏的数据。

使用 --shallow 选项,仅检查拆分提交图链中的 tip 提交图文件。

示例

  • 为本地 .git 目录中打包的提交写入提交图文件。

    $ git commit-graph write
  • 写入提交图文件,使用 <pack-index> 中的提交来扩展当前的提交图文件。

    $ echo <pack-index> | git commit-graph write --stdin-packs
  • 写入包含所有可到达提交的提交图文件。

    $ git show-ref -s | git commit-graph write --stdin-commits
  • 写入一个提交图文件,其中包含当前提交图文件中的所有提交以及从 HEAD 可访问的提交。

    $ git rev-parse HEAD | git commit-graph write --stdin-commits --append

配置

本节中此行以下的所有内容均有选择地从 git-config[1] 文档中包含。 内容与那里找到的内容相同

commitGraph.generationVersion

指定在写入或读取提交图文件时要使用的生成编号版本类型。 如果指定了版本 1,则不会写入或读取更正后的提交日期。 默认为 2。

commitGraph.maxNewFilters

指定 git commit-graph write--max-new-filters 选项的默认值(参见 git-commit-graph[1])。

commitGraph.readChangedPaths

已弃用。 如果为 true,则等效于 commitGraph.changedPathsVersion=-1,如果为 false,则等效于 commitGraph.changedPathsVersion=0。(如果也设置了 commitGraph.changedPathVersion,则 commitGraph.changedPathsVersion 优先。)

commitGraph.changedPathsVersion

指定 Git 将读取和写入的已更改路径 Bloom 过滤器的版本。 可以是 -1、0、1 或 2。请注意,大于 1 的值可能与尚未理解这些版本的旧版本 Git 不兼容。 在混合版本环境中操作时要小心。

默认为 -1。

如果为 -1,Git 将使用存储库中已更改路径 Bloom 过滤器的版本,如果不存在,则默认为 1。

如果为 0,Git 将不读取任何 Bloom 过滤器,并且在指示写入时将写入版本 1 的 Bloom 过滤器。

如果为 1,Git 将仅读取版本 1 的 Bloom 过滤器,并且将写入版本 1 的 Bloom 过滤器。

如果为 2,Git 将仅读取版本 2 的 Bloom 过滤器,并且将写入版本 2 的 Bloom 过滤器。

有关更多信息,请参见 git-commit-graph[1]

文件格式

GIT

git[1] 套件的一部分

scroll-to-top