您是否曾经在代码中发现导致行更改的错误,并想知道是谁对那行进行了更改?幸运的是,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-lines
or --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