简体中文 ▾ Topics ▾ Latest version ▾ git-annotate last updated in 2.50.0

名称

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

概述

git annotate [<选项>] [<修订选项>] [<修订>] [--] <文件>

描述

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

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

选项

-b

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

--root

不把根提交当作边界。 这也可以通过 blame.showRoot 配置选项来控制。

--show-stats

在历史追溯输出的结尾处包括额外的统计数据。

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

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

<start><end> 是可选的 -L <start>-L <start>, 范围从 <start> 到文件末尾。 -L ,<end> 从文件开始到 <end>.

<开始><结束> 可以采取这些形式之一:

  • 数目

    如果'<开始>'或'<结束>'是一个数字,它指定了一个绝对行数(行数从1开始计算)。

  • /正则表达式/

    这种形式将使用与给定的 POSIX 正则表达式匹配的第一行。如果 <start> 是一个重词,它将从前一个 -L 范围的末尾开始搜索,如果有的话,则从文件的开始。 如果 <start>^/regex/,它将从文件的开始搜索。 如果 <end> 是一个正则表达式,它将从 <start> 所给的行开始搜索。

  • +offset或-offset

    这只对'<end>'有效,将指定'<start>'所给的行前或行后的数量。

如果 :<funcname> 代替了 <start><end> ,它是一个正则表达式,表示从第一个匹配 <funcname> 的 funcname 行开始,直到下一个 funcname 行的范围。:<funcname> 从上一个 -L 范围的末尾开始搜索,如果有的话,则从文件的开始搜索。^:<funcname>`从文件的开始搜索。函数名的确定方式与 `git diff 确定补丁组头的方式相同(见 gitattributes[5] 中的’定义自定义组头')。

-l

显示长转(默认值:关闭)。

-t

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

-S <修订文件>

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

--reverse <修订>..<修订>

Walk history forward instead of backward. Instead of showing the revision in which a line appeared, this shows the last revision in which a line has existed. This requires a range of revision like START..END where the path to blame exists in START. git blame --reverse START is taken as git blame --reverse START..HEAD for convenience.

--first-parent

在看到合并提交时只关注第一个父提交。这个选项可以用来确定某一行何时被引入某个特定的集成分支,而不是何时被引入整个历史中。

-p
--porcelain

以适合机器使用的格式显示。

--line-porcelain

显示上层命令格式,但输出每一行的提交信息,而不仅仅是第一次引用提交时的信息。 意味着 --porcelain。

--incremental

以适合机器使用的格式逐步显示结果。

--encoding=<编码>

指定用于输出作者姓名和提交摘要的编码。设置为 none 会使历史追溯输出未转换的数据。更多信息见 git-log[1] 手册页中关于编码的讨论。

--contents <文件>

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

--date <格式>

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

--[no-]progress

当它连接到一个终端时,默认情况下进度状态会在标准错误流中报告。这个标志可以使进度报告即使没有连接到终端。--porcelain`或--incremental` 不能与 --progress 一起使用。

-M[<数量>]

检测文件中移动或复制的行。当一次提交移动或复制一个行块时(例如,原始文件有 A,然后是 B,而提交将其改为 B,然后是 A),传统的 blame 算法只注意到一半的移动,通常将向上移动的行(即 B )归咎于父代,而将向下移动的行(即 A )归咎于子代提交。 有了这个选项,通过运行额外的检查,两组行都会被归咎于父代。

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

-C[<数量>]

除了`-M`之外,还可以检测在同一提交中被修改的其他文件中移动或复制的行。 这在你重新组织程序并在不同文件间移动代码时很有用。 当这个选项被赋予两次时,命令会在创建文件的提交中额外寻找其他文件的拷贝。当这个选项出现三次时,命令会在任何一次提交中额外寻找其他文件的副本。

<num> 是可选的,但它是 Git 必须检测到的在文件之间移动或复制的字母数字字符的数量的下限,以便它将这些行与父提交关联起来。而默认值是 40。如果有一个以上的 -C 选项,只有最后一个 -C 的 <num> 参数起作用。

--ignore-rev <修订>

Ignore changes made by the revision when assigning blame, as if the change never happened. Lines that were changed or added by an ignored commit will be blamed on the previous commit that changed that line or nearby lines. This option may be specified multiple times to ignore more than one revision. If the blame.markIgnoredLines config option is set, then lines that were changed by an ignored commit and attributed to another commit will be marked with a ? in the blame output. If the blame.markUnblamableLines config option is set, then those lines touched by an ignored commit that we could not attribute to another revision are marked with a *. In the porcelain modes, we print ignored and unblamable on a newline respectively.

--ignore-revs-file <文件>

忽略 file 中列出的修订,其格式必须与 fsck.skipList 相同。 这个选项可以重复使用,这些文件将在任何用 blame.ignoreRevsFile 配置选项指定的文件之后被处理。 一个空的文件名,"",将清除以前处理的文件的 Revs 列表。

--color-lines

在默认格式下,如果行注释与前一行来自同一提交,则颜色不同。这可以让我们更容易区分不同提交的代码块。颜色默认为青色,可以使用 color.blame.repeatedLines 配置选项进行调整。

--color-by-age

根据默认格式的行的阶段,给行的注释着色。 color.blame.highlightRecent 配置选项控制每个阶段范围使用什么颜色。

-h

显示帮助信息。

参见

GIT

属于 git[1] 文档

scroll-to-top