Featured image of post 使用 .git-blame-ignore-revs 忽略 gitblame 中的格式提交Featured image of post 使用 .git-blame-ignore-revs 忽略 gitblame 中的格式提交

使用 .git-blame-ignore-revs 忽略 gitblame 中的格式提交

使用 gitblameignores 防止批量 prettier/eslint 重新格式化提交污染您的代码所有权历史记录。

当审核代码库以找出何时以及为何引入一行代码时,git blame 是开发人员最好的朋友。然而,大型样式更新、代码格式化程序采用(如 Prettier)或全局 linter 自动修复可能会扰乱这段历史。单个批量重新格式化提交可以重写整个存储库的代码作者身份标签,隐藏原始开发人员和引入实际业务逻辑的提交。

为了解决这个问题,Git(自版本 2.23 起)引入了一项本机功能,允许开发人员在指责评估期间忽略特定提交: .git-blame-ignore-revs 文件。

在本指南中,我们将探讨如何配置此忽略列表以保持 git blame 干净且相关。


1. .git-blame-ignore-revs 的工作原理

.git-blame-ignore-revs 文件是放置在存储库根目录下的纯文本文件。它包含提交哈希的列表。当 Git 执行 git blame 时,它会忽略这些指定的提交,并将作者身份追溯到实际修改该行逻辑的上一个提交


2. 实施指南

第 1 步:确定要忽略的提交

查找导致文件历史记录混乱的仅格式化提交或大型重构提交(例如 a1b2c3d4e5f6g7h8i9j0)的 SHA-1 哈希值。

步骤 2:创建 .git-blame-ignore-revs 文件

在存储库的根目录中创建一个名为 .git-blame-ignore-revs 的新文件,列出目标:

# Run prettier code formatting on entire codebase
a1b2c3d4e5f6g7h8i9j0a1b2c3d4e5f6g7h8i9j0

# Global eslint automatic fixes
e5f6g7h8i9j0a1b2c3d4e5f6g7h8i9j0a1b2c3d4

第 3 步:告诉 Git 使用忽略文件

运行以下命令指示 Git 自动为您的本地环境引用此文件:

git config blame.ignoreRevsFile .git-blame-ignore-revs

现在,任何时候您在本地运行 git blame 时,都将绕过指定的格式修订。


3. 共享配置和 GitHub 支持

配置 git config blame.ignoreRevsFile 是本地配置。为了确保您的整个团队从中受益,请将 .git-blame-ignore-revs 文件提交到您的存储库。

此外,主要的代码托管平台(例如 GitHubGitLab)都支持此标准。如果默认分支的根目录中存在 .git-blame-ignore-revs 文件,则当用户查看文件责任历史记录时,其 Web 界面将自动忽略这些提交。


4. 覆盖忽略

如果您需要直接检查格式化提交,您可以使用以下命令指示 Git 绕过忽略列表:

git blame --no-ignore-revs-file path/to/file.js

结论

全局代码格式化运行可提高可读性,但可能会损坏历史记录跟踪。通过实现 .git-blame-ignore-revs 文件:

  1. 格式化运行可以从作者归属中排除。
  2. 提交历史记录映射回其原始逻辑实现。
  3. GitHub 上的审核界面对于团队来说仍然保持整洁。

立即在您的存储库中进行设置,以保护您的代码审计跟踪!