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> 匹配的第一行。+<offset>或-<offset>:这仅对 <end> 有效,并将指定在 <start> 给定的行之前或之后的行数。
-l
显示长修订版本(默认:关闭)。
-t
显示原始时间戳(默认:关闭)。
-S <revs-file>
使用 <revs-file> 中的修订版本而不是调用 git-rev-list(1)。
--reverse <start>..<end>
向前遍历历史而不是向后。不是显示行出现的修订版本,而是显示行最后存在的修订版本。这需要像 <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>
使用 <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 模式下,我们分别在新行上打印 ignored 和 unblamable。
--ignore-revs-file <file>
忽略 <file> 中列出的修订版本,其格式必须与 fsck.skipList 相同。此选项可重复,这些文件将在使用 blame.ignoreRevsFile 配置选项指定的任何文件之后处理。空文件名 "" 将清除先前处理文件中的修订版本列表。
--color-lines
如果行注释来自与前一行相同的提交,则在默认格式中以不同颜色显示。这使得更容易区分不同提交引入的代码块。颜色默认为青色,可以使用 color.blame.repeatedLines 配置选项进行调整。
--color-by-age
在默认格式中根据行的存在时间对行注释着色。color.blame.highlightRecent 配置选项控制每个年龄范围使用什么颜色。
-h
显示帮助消息。
另请参阅
Git
git(1) 套件的一部分
