简体中文 ▾ 主题 ▾ 最新版本 ▾ git-annotate 最后更新于 2.52.0

名称

git-annotate - 用提交信息注释文件行

概要

git annotate [<options>] [<rev-opts>] [<rev>] [--] <file>

描述

用引入该行的提交信息注释给定文件中的每一行。可选地从给定修订版本进行注释。

此命令与 git-blame[1] 之间的唯一区别在于它们使用略有不同的输出格式,并且此命令仅为向后兼容而存在,以支持现有脚本,并为来自其他 SCM 系统的人提供更熟悉的命令名称。

选项

-b

为边界提交显示空白 SHA-1。这也可以通过 blame.blankBoundary 配置选项进行控制。

--root

不要将根提交视为边界。这也可以通过 blame.showRoot 配置选项进行控制。

--show-stats

在 blame 输出末尾包含额外的统计信息。

-L <start>,<end>
-L :<funcname>

仅注释由<start>,<end> 或函数名正则表达式<funcname> 给出的行范围。可以指定多次。允许重叠范围。

<start><end> 是可选的。 -L <start>-L <start>,<start> 到文件末尾。 -L ,<end> 从文件开头到<end>

<start><end> 可以采用以下形式之一

  • <number>

    如果 <start><end> 是一个数字,它指定一个绝对行号(行从 1 开始计数)。

  • /<regex>/

    此形式将使用第一个匹配给定 POSIX <regex> 的行。如果 <start> 是一个正则表达式,它将从上一个 -L 范围的末尾(如果存在)开始搜索,否则从文件开头开始搜索。如果 <start>^/<regex>/,它将从文件开头开始搜索。如果 <end> 是一个正则表达式,它将从 <start> 给定的行开始搜索。

  • +<offset>-<offset>

    这仅对 <end> 有效,并将指定 <start> 给定行之前或之后的行数。

如果用 <start><end> 的位置给出了 :<funcname>,它是一个正则表达式,表示从第一个匹配 <funcname> 的 funcname 行到下一个 funcname 行的范围。:<funcname> 从上一个 -L 范围的末尾(如果存在)开始搜索,否则从文件开头开始搜索。^:<funcname> 从文件开头开始搜索。函数名的确定方式与 git diff 如何处理补丁块头相同(参见 gitattributes[5] 中的“定义自定义块头”)。

-l

显示长修订版(默认:关闭)。

-t

显示原始时间戳(默认:关闭)。

-S <revs-file>

使用 revs-file 中的修订版本,而不是调用 git-rev-list[1]

--reverse <rev>..<rev>

向前遍历历史记录而不是向后。此命令显示某行最后出现过的修订版本,而不是首次出现的修订版本。这需要一个修订版本范围,如 START..END,其中 blame 的路径存在于 START 中。 git blame --reverse START 被视为 git blame --reverse START..HEAD 以方便使用。

--first-parent

在遇到合并提交时,仅跟随第一个父提交。此选项可用于确定一行何时被引入到特定集成分支,而不是何时被引入到整体历史记录中。

-p
--porcelain

以专为机器消费设计的格式显示。

--line-porcelain

显示 porcelain 格式,但为每一行输出提交信息,而不仅仅是提交首次被引用的地方。隐含 --porcelain。

--incremental

以专为机器消费设计的格式增量显示结果。

--encoding=<encoding>

指定用于输出作者姓名和提交摘要的编码。将其设置为 none 会使 blame 输出未经转换的数据。有关更多信息,请参阅 git-log[1] 手册页中关于编码的讨论。

--contents <file>

使用命名文件的内容进行注释,如果指定了 <rev>,则从 <rev> 开始,否则从 HEAD 开始。你可以指定- 以使命令从标准输入读取文件内容。

--date <format>

指定用于输出日期的格式。如果未提供 --date,则使用 blame.date 配置变量的值。如果 blame.date 配置变量也未设置,则使用 iso 格式。支持的值请参阅 git-log[1] 中 --date 选项的讨论。

--progress
--no-progress

默认情况下,如果进度状态流连接到终端,则会在标准错误流上报告。此标志即使未连接到终端也会启用进度报告。不能将 --progress--porcelain--incremental 一起使用。

-M[<num>]

检测文件中移动或复制的行。当一个提交移动或复制一块行时(例如,原始文件是 A 然后是 B,提交后变为 B 然后是 A),传统的blame算法只能识别一半的移动,通常将向上移动的行(即 B)归因于父提交,并将向下移动的行(即 A)归因于子提交。使用此选项,通过运行额外的检查,两组行都将被归因于父提交。

<num> 是可选的,但它是 Git 必须检测到的一个文件中移动/复制的字母数字字符的下限,才能将这些行与父提交关联起来。默认值为 20。

-C[<num>]

除了 -M 之外,还检测在同一提交中从其他已修改的文件移动或复制的行。当你重新组织程序并在文件之间移动代码时,这很有用。当此选项给出两次时,命令还会查找创建文件的提交中的其他文件的副本。当此选项给出三次时,命令还会查找任何提交中的其他文件的副本。

<num> 是可选的,但它是 Git 必须检测到的跨文件移动/复制的字母数字字符的下限,才能将这些行与父提交关联起来。默认值为 40。如果给出了多个 -C 选项,则最后一个 -C 的 <num> 参数将生效。

--ignore-rev <rev>

在分配 blame 时忽略修订版本所做的更改,就好像该更改从未发生过一样。由被忽略的提交更改或添加的行将被归因于更改该行或附近行的前一个提交。此选项可以指定多次以忽略多个修订版本。如果设置了 blame.markIgnoredLines 配置选项,则被忽略的提交所更改并归因于另一个提交的行将在 blame 输出中用 ? 标记。如果设置了 blame.markUnblamableLines 配置选项,则那些被忽略的提交所触及但我们无法归因于另一个修订版本的行将被标记为 *。在 porcelain 模式下,我们分别在换行符上打印ignoredunblamable

--ignore-revs-file <file>

忽略 file 中列出的修订版本,该文件必须与 fsck.skipList 格式相同。此选项可以重复,并且这些文件将在处理任何通过 blame.ignoreRevsFile 配置选项指定的先前文件之后进行处理。空文件名 "" 将清除先前处理过的文件中的修订版本列表。

--color-lines

在默认格式中,用不同的颜色标记来自与前一行相同提交的行注释。这使得区分不同提交引入的代码块更容易。颜色默认为青色,可以通过 color.blame.repeatedLines 配置选项进行调整。

--color-by-age

在默认格式中,根据行的年龄为行注释着色。 color.blame.highlightRecent 配置选项控制用于每个年龄范围的颜色。

-h

显示帮助消息。

另请参阅

GIT

Git[1] 套件的一部分