## 名称

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

## 概要

    git annotate [options] file [revision]

## 描述

使用引入该行的提交的信息来标注给定文件中的每一行。可以从给定的修订中注释。

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

## 选项

-b

显示边界提交的空白 SHA-1。这也可以通过`blame.blankboundary`配置选项来控制。

--root

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

--show-stats

在过失输出结尾包含更多统计数据。

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

仅注释给定的线范围。可以多次指定。重叠范围是允许的。

<start>（<开始>）和<end> （<结束>）是可选的。“-L <start>（-L <开始>）”或“-L <start>（-L <开始>）”跨越从 <start> （<开始>）到文件结束。“-L，<end>（-L ,<结束>）”从文件开始到<end>（<结束>）。

<start>（<开始>）和<end>（<结束>）可以采取以下形式之一：

- 数字 如果<start> （<开始>）或<end>（<结束>）是一个数字，它指定一个绝对行号（行数从1开始）。

- /regex/

这个表单将使用与给定的 POSIX 正则表达式匹配的第一行。如果 <start> 是一个正则表达式，它将从前一个`-L`范围的末尾（如果有的话）开始搜索，否则从文件起始处开始搜索。如果 <start> 是“^ / regex /”，它将从文件开头搜索。如果 <end> 是一个正则表达式，它将从 <start> 给出的行开始搜索。

- +offset or -offset

This is only valid for <end> and will specify a number of lines before or after the line given by <start>.

如果给出“：<funcname>”来代替<start>和<end>，它是一个正则表达式，表示从匹配<funcname>的第一个 funcname 行到下一个funcname行的范围。“：<funcname>”从上一个`-L`范围的末尾（如果有）搜索，否则从文件开头搜索。“^：<funcname>”从文件开头搜索。

-l

显示长时间（默认：关闭）。

-t

显示原始时间印章（默认值：关闭）。

-S <revs-file>

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

--reverse <rev>..<rev>

前进而不是后退。它不是显示一行出现的修订，而是显示一行存在的最后修订。这需要一系列的修订，如 START..END，在 START 中存在责任路径。`git blame --reverse START`是`git blame --reverse START..HEAD`为了方便而用以代替的。

-p --porcelain

以设计用于机器消耗的格式显示。

--line-porcelain

显示易碎的格式，但输出每行的提交信息，而不仅仅是第一次引用提交。意味着 - 易碎品。

--incremental

以设计用于机器消耗的格式逐步显示结果。

--encoding=<encoding>

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

--contents <file>

当未指定<rev>时，该命令注释从工作树副本向后开始的更改。该标志使命令假装工作树副本具有指定文件的内容（指定`-`使命令从标准输入中读取）。

--date <format>

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

--no-progress

当连接到终端时，默认情况下标准错误流会报告进度状态。即使没有附加到终端，该标志也可以进行进度报告。不能将`--progress`与`--porcelain`或者`--incremental` 一起使用。

-M<num>

检测文件中移动或复制的行。当提交移动或复制一行代码块时（例如，原始文件有A然后B，提交将其更改为B然后A），传统`blame`算法只会注意到一半的移动，并且通常会将移动的线（即B）交给双亲，并将责任分配给向下移动（即A）到孩子提交的行。有了这个选项，通过运行额外的检查通道，这两组线都被归咎于双亲。

<num>是可选的，但它是 Git 必须检测的字母数字字符数的下限，以便在文件中移动/复制，以便将这些行与父提交相关联。默认值是20。

-C<num>

除了`-M`检测从同一提交中修改的其他文件移动或复制的行之外。当您重新组织您的程序并在各个文件之间移动代码时，这非常有用。当该选项被赋予两次时，该命令会另外在创建该文件的提交中查找来自其他文件的副本。当该选项被赋予三次时，该命令还会在任何提交中查找来自其他文件的副本。

<num>是可选的，但它是 Git 必须检测的字母数字字符数的下限，作为文件之间的移动/复制，以便将这些行与父提交相关联。默认值是40。如果有多个`-C`选项，最后的<num>参数`-C`将生效。

-h

显示帮助信息。

--indent-heuristic --no-indent-heuristic

这些是为了帮助调试和调整实验启发式（默认情况下是关闭的），这些启发式技术改变了差异边界以使修补程序更易于阅读。