Git blame – 如何找出谁用 Git 修改了一行

您是否曾经在代码中发现导致行更改的错误,并想知道是谁对那行进行了更改?幸运的是,git 有一个命令git blame让您选择一个文件并显示谁最后更改了每一行。如果您想知道,之所以调用它,是git blame因为它可以让您将责任归咎于您正在调查的代码中断行。

要找出谁更改了一行,只需运行以下命令,myfile.txt您要检查的文件在哪里:

git blame myfile.txt

如果您对 的格式感兴趣git blame,它的分解如下:

^665221a (Johnny Simpson 2022-04-30 20:58:04 +0100  10) import { v4 as uuid } from 'uuid';
^          ^                                         ^
|          |                                         |
Commit ID  |                                     Line number
           |
         Author and timestamp

唯一需要注意的git blame是,大多数时候当你试图找出肇事者是谁时,事实证明一直都是你。?

在特定行上使用 git blame#

这确实很有用,但是如果您想在特定线路上进行磨练,您可以使用该-L选项。例如,如果您想查看第 1 行和第 5 行之间的更改历史记录,您可以执行以下操作:

git blame index.js -L 1,5

或者,如果您想查找第 20 行和第 40 行之间的更改历史记录,您可以执行以下操作:

git blame index.js -L 20,40

其他有用的 git blame 选项#

git blame您可能还想使用许多其他有用的选项。以下是我使用最多的一些,以及它们的作用。

使用 git blame 显示作者的电子邮件

您只需显示作者的电子邮件地址,只需使用以下-e选项:

git blame index.js -e

产生这样的输出:

^665221a (<some@email.com> 2022-04-30 20:58:04 +0100   8) import { fileURLToPath } from 'url'

用 git blame 忽略 whitepsace

git blame如果您的代码包含很多空格,您也可以忽略空格。为此,您可以使用以下-w选项:

git blame index.js -w

使用 git blame 用颜色格式化行

默认情况下,git blame生成白色或黑色文本墙。如果要按颜色区分不同的提交和更改,可以使用--color-linesor --color-by-age

  • --color-lines如果之前的行是不同的提交,则为行着色。
  • --color-by-age按年龄着色线条。

用 git blame 显示文件名

要使用 显示文件名git blame,请使用该-f选项。这将显示文件名和提交 ID。

git blame index.js -f

将产生如下输出:

^665221a index.js (Johnny Simpson 2022-04-30 20:58:04 +0100  16) import dotenv from 'dotenv'

使用 git blame 从下到上(反转)显示行更改

您还可以使用 反向显示线条变化git blame,表示从底部开始,然后向上。只需将--reverse选项添加到您的命令中:

git blame index.js --reverse