设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.50.1 无更改
-
2.50.0
2025-06-16
- 2.41.1 → 2.49.1 无变更
-
2.41.0
2023-06-01
- 2.39.1 → 2.40.4 无更改
-
2.39.0
2022-12-12
- 2.34.1 → 2.38.5 无更改
-
2.34.0
2021-11-15
- 2.31.1 → 2.33.8 无变化
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 无更改
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 无更改
-
2.29.0
2020-10-19
- 2.23.1 → 2.28.1 无更改
-
2.23.0
2019-08-16
- 2.18.1 → 2.22.5 无更改
-
2.18.0
2018-06-21
- 2.16.6 → 2.17.6 无更改
- 2.15.4 无更改
- 2.13.7 → 2.14.6 无更改
-
2.12.5
2017-09-22
-
2.11.4
2017-09-22
- 2.9.5 → 2.10.5 无变更
-
2.8.6
2017-07-30
-
2.7.6
2017-07-30
- 2.5.6 → 2.6.7 无变更
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 无更改
-
2.0.5
2014-12-17
描述
使用引入该行的提交信息来注解给定文件中的每一行。可选择从给定修订版本进行注解。
此命令与 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> 可以采用以下形式之一
-
数字
如果 <start> 或 <end> 是一个数字,它指定一个绝对行号(行从 1 开始计数)。
-
/正则表达式/
此形式将使用匹配给定 POSIX 正则表达式的第一行。如果 <start> 是正则表达式,它将(如果存在)从前一个
-L
范围的末尾开始搜索,否则从文件开头开始搜索。如果 <start> 是^/regex/
,它将从文件开头开始搜索。如果 <end> 是正则表达式,它将从 <start> 给定的行开始搜索。 -
+偏移量 或 -偏移量
这仅对 <end> 有效,并将指定 <start> 给定行之前或之后的行数。
如果
:
<funcname> 用来代替 <start> 和 <end>,它是一个正则表达式,表示从第一条匹配 <funcname> 的函数名行开始,直到下一条函数名行的范围。:
<funcname> (如果存在)从前一个-L
范围的末尾开始搜索,否则从文件开头开始搜索。^:
<funcname> 从文件开头开始搜索。函数名确定方式与git
diff
处理补丁块头(hunk header)的方式相同(参见 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> 则从该修订版本开始,否则从 HEAD 开始。您可以指定 - 来使命令从标准输入读取文件内容。
- --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
选项,则最后一个-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
-
显示帮助信息。