英语法语西班牙语

Ad


OnWorks 网站图标

git-blame - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 git-blame

这是 git-blame 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


git-blame - 显示文件的每一行最后修改的版本和作者

概要


混帐 [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--增量]
[-L ] [-S ] [-M] [-C] [-C] [-C] [--since= ]
[--缩写= ] [ | - 内容| - 逆转] [--]

商品描述


用来自最后一个修订版的信息注释给定文件中的每一行
修改了线路。 或者,从给定的修订开始注释。

当指定一次或多次时,-L 将注释限制为请求的行。

行的原点在整个文件重命名时自动跟随(目前有
没有关闭重命名跟随的选项)。 跟随从一个文件移动到的行
另一个,或者要遵循从另一个文件等复制和粘贴的行,请参阅
-C 和 -M 选项。

该报告不会告诉您有关已删除或替换的行的任何信息; 你
需要使用工具,例如 混帐 差异 或“镐”界面简要提到
以下段落。

除了支持文件注释,Git 还支持搜索开发历史
当代码片段发生在更改中时。 这使得跟踪代码何时成为可能
片段被添加到文件中,在文件之间移动或复制,并最终被删除或
取代。 它的工作原理是在差异中搜索文本字符串。 一个小例子
搜索blame_usage 的pickaxe 接口:

$ git log --pretty=oneline -S'blame_usage'
5040f17eba15504bad66b14a645bddd9b015ebb7 blame -S <ancestry-file>
ea4c7f9bf69e781dd0cd88d2bccb2bf5cc15c9a7 git-blame: Make the output

配置


-b
为边界提交显示空白 SHA-1。 这也可以通过控制
blanc.blankboundary 配置选项。

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

--显示统计
在指责输出结束时包括额外的统计数据。

-L , , -L :
仅注释给定的行范围。 可以多次指定。 重叠
允许范围。

和是可选的。 “-L ” 或 “-L ,”跨越到
文件结束。 “-L , ” 跨越从文件开始到.

和可以采用以下形式之一:

· 数字

如果或者是一个数字,它指定一个绝对行号(行数
从1年开始)。

· /正则表达式/

此表单将使用与给定 POSIX 正则表达式匹配的第一行。 如果是一个
regex,它会从前一个 -L 范围的末尾开始搜索,如果有的话,否则
从文件开始。 如果是“^/regex/”,它会从开头搜索
文件。 如果是一个正则表达式,它将从给定的行开始搜索.

· +offset 或 -offset

这仅适用于并将指定之前或之后的行数
由给出的行.

如果 ”: ”代替和,这是一个正则表达式
表示从匹配的第一个 funcname 行开始的范围, 至
下一个 funcname 行。 “: ” 从前一个 -L 范围的末尾开始搜索,如果
任何,否则从文件的开头。 “^: ” 从文件开头搜索。

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

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

-S
使用来自 revs-file 的修订而不是调用 git 修订列表(1)。

- 逆转
向前而不是向后走历史。 而不是显示其中一个修订
行出现,这显示了该行存在的最后一个修订版。 这需要
一系列修订,如 START..END,其中归责路径存在于 START 中。

-p, --瓷器
以专为机器消费设计的格式显示。

--line-瓷器
显示瓷器格式,但输出每一行的提交信息,而不仅仅是
第一次引用提交。 暗示——瓷器。

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

--编码=
指定用于输出作者姓名和提交摘要的编码。 将其设置为
none 使怪输出未转换的数据。 有关更多信息,请参阅讨论
关于编码 混帐日志(1) 手册页。

- 内容
什么时候未指定,该命令注释从后面开始的更改
工作树副本。 此标志使命令假装工作树复制
具有命名文件的内容(指定 - 使命令从
标准输入)。

- 日期
指定用于输出日期的格式。 如果未提供 --date 的值
使用了blame.date 配置变量。 如果blame.date 配置变量也没有设置,
使用iso格式。 有关支持的值,请参阅 --date 选项的讨论
at 混帐日志(1)。

-M| |
检测文件中移动或复制的行。 当提交移动或复制一块
行(例如,原始文件有 A 和 B,并且提交将其更改为 B 和
然后 A),传统的 算法只注意到一半的运动和
通常将向上移动的行(即 B)归咎于父级并分配责任
到下移(即 A)到子提交的行。 有了这个选项,两个
通过运行额外的检查,将多组线路归咎于父级。

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

-C| |
除了 -M 之外,检测从其他文件中移动或复制的行
相同的提交。 这在您重新组织程序和移动代码时很有用
跨文件。 当此选项给出两次时,该命令会另外查找
从创建文件的提交中的其他文件复制。 当给出这个选项时
三次,该命令还会在任何提交中从其他文件中查找副本。

是可选的,但它是字母数字字符数的下限
Git 必须检测到在文件之间移动/复制才能关联这些行
与父提交。 并且默认值是 40。如果有多个 -C
给出的选项, 最后一个 -C 的参数将生效。

-h
显示帮助信息。

-c
使用相同的输出模式 git-注释(1)(默认值:关闭)。

--score-调试
包括与文件之间的行移动相关的调试信息(参见 -C)
和在文件中移动的行(参见 -M)。 列出的第一个数字是分数。 这是
检测到在之间或内部移动的字母数字字符的数量
文件。 这必须高于某个阈值 混帐 考虑那些行
已移动的代码。

-f,--显示名称
在原始提交中显示文件名。 默认情况下显示文件名,如果有
由于重命名检测,来自具有不同名称的文件的任何行。

-n,--显示号码
显示原始提交中的行号(默认:关闭)。

-s
从输出中隐藏作者姓名和时间戳。

-e,--显示电子邮件
显示作者电子邮件而不是作者姓名(默认值:关闭)。 这也可以
通过blame.showEmail 配置选项控制。

-w
比较父版本和子版本以查找位置时忽略空格
台词来自。

--缩写=
而不是使用默认的 7+1 十六进制数字作为缩写的对象名称,
用+1 位数。 请注意,1 列用于插入符号以标记边界提交。

FORMAT


在这种格式中,每一行都在一个标题之后输出; 标题至少有
第一行有:

· 该行所属的提交的 40 字节 SHA-1;

· 原文件中该行的行号;

· 最终文件中该行的行号;

· 在从不同于前一个提交的一组行开始的行上,
该组中的行数。 在后续行中,此字段不存在。

对于每个提交,此标题行后面至少跟有以下信息:

· 作者姓名(“author”)、电子邮件(“author-mail”)、时间(“author-time”)和时区
(“作者-tz”); 提交者也是如此。

· 该行所属的提交中的文件名。

· 提交日志消息(“摘要”)的第一行。

实际行的内容在上述标题之后输出,以 TAB 为前缀。 这个
是允许稍后添加更多标题元素。

瓷器格式通常会抑制已经看到的提交信息。
例如,被归咎于同一个提交的两行都将被显示,但是
该提交的详细信息将只显示一次。 这更有效,但可能需要
更多状态由读者保留。 --line-porcelain 选项可用于输出完整的
为每一行提交信息,允许更简单(但效率较低)的使用,例如:

# 统计每个作者的行数
git 责备 --line-porcelain 文件 |
sed -n 's/^author //p' |
排序 | uniq -c | 排序 -rn

指定 范围


不比 混帐 混帐 注释 在旧版本的 git 中,注释的范围
可以限制为行范围和修订范围。 -L 选项,它限制
对一系列行的注释,可以多次指定。

当您有兴趣查找文件 foo 的第 40-60 行的原点时,您可以使用
像这样的 -L 选项(它们的意思相同——都要求从 line 开始的 21 行
40):

git 责备 -L 40,60 foo
git 责备 -L 40,+21 foo

您也可以使用正则表达式来指定行范围:

gitblame -L '/^sub hello {/,/^}$/' foo

这将注释限制在 hello 子例程的主体中。

当您对 v2.6.18 之前的更改或 3 之前的更改不感兴趣时
周,您可以使用类似于 混帐 版本列表:

git 责备 v2.6.18 .. -- foo
git 责备 --since=3.weeks -- foo

当修订范围说明符用于限制注释时,没有
自范围边界以来发生了变化(提交 v2.6.18 或最近的提交
在上面的示例中超过 3 周)被归咎于该范围边界提交。

一种特别有用的方法是查看添加的文件是否具有通过复制和粘贴创建的行
从现有文件。 有时这表明开发人员草率且确实
没有正确重构代码。 可以先找到引入文件的提交
使用:

git log --diff-filter=A --pretty=short -- foo

然后使用 commit^! 注释提交与其父项之间的更改。 符号:

gitblame -C -C -f $commit^! -- 富

增加的 OUTPUT


当使用 --incremental 选项调用时,该命令会在构建时输出结果。 这
输出通常会首先讨论最近提交所触及的行(即
行将被无序注释)并且旨在供交互式查看器使用。

输出格式类似于 Porcelain 格式,但不包含实际的
正在注释的文件中的行。

1. 每个指责条目总是以一行开头:

<40 字节十六进制 sha1>

行号从 1 开始计数。

2. 提交第一次出现在流中时,它有各种其他信息
about it 在每一行的开头打印出一个单字标签,描述了
额外的提交信息(作者、电子邮件、提交者、日期、摘要等)。

3. 与 Porcelain 格式不同,文件名信息总是给出并终止
入口:

“文档名称”

因此对于一些面向行和面向词的解析器进行解析真的很容易
(这对于大多数脚本语言来说应该是很自然的)。

备注
对于进行解析的人:为了使其更健壮,只需忽略之间的任何行
第一个和最后一个(“ " 和 "filename" 行)你不认识的地方
开头的标签词(或关心那个特定的词)
“扩展信息”行。 这样,如果有添加的信息(例如
提交编码或扩展提交评论),责备查看者不会关心。

MAPPING 作者


如果文件 .mailmap 存在于存储库的顶层或指向的位置
通过 mailmap.file 或 mailmap.blob 配置选项,用于映射作者和
提交者姓名和电子邮件地址到规范的真实姓名和电子邮件地址。

在简单形式中,文件中的每一行都由一个人的规范真实姓名组成。
提交中使用的作者、空格和电子邮件地址(由 <>) 映射
到名字。 例如:

正确的名称[电子邮件保护]>

更复杂的形式是:

<[电子邮件保护]>[电子邮件保护]>

它允许 mailmap 仅替换提交的电子邮件部分,并且:

正确的名称[电子邮件保护]>[电子邮件保护]>

这允许 mailmap 替换匹配的提交的名称和电子邮件
指定的提交电子邮件地址,以及:

正确的名称[电子邮件保护]> 提交名称[电子邮件保护]>

这允许 mailmap 替换匹配的提交的名称和电子邮件
指定的提交名称和电子邮件地址。

示例 1:您的历史记录包含两位作者 Jane 和 Joe 的提交,他们的名字出现
在几种形式的存储库中:

乔开发人员[电子邮件保护]>
乔 R. 开发人员[电子邮件保护]>
简·多伊[电子邮件保护]>
简·多伊
简 D。

现在假设 Joe 希望使用他的中间名首字母,而 Jane 更喜欢她的姓氏
完全说明。 正确的 .mailmap 文件如下所示:

简·多伊
乔 R. 开发人员[电子邮件保护]>

请注意如何不需要输入,因为真实姓名
那个作者已经是正确的。

示例 2:您的存储库包含来自以下作者的提交:

昵称1[电子邮件保护]>
昵称2[电子邮件保护]>
昵称2[电子邮件保护]>
圣诞老人[电子邮件保护]>
克劳斯[电子邮件保护]>
首席技术官[电子邮件保护]>

那么你可能想要一个看起来像这样的 .mailmap 文件:

<[电子邮件保护]>[电子邮件保护]>
一些花花公子[电子邮件保护]> 昵称1[电子邮件保护]>
其他作者[电子邮件保护]> 昵称2[电子邮件保护]>
其他作者[电子邮件保护]>[电子邮件保护]>
圣诞老人[电子邮件保护]>[电子邮件保护]>

使用哈希 # 对于在他们自己的行上或在电子邮件地址之后的评论。

使用 onworks.net 服务在线使用 git-blame


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad