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 上的審核介面對於團隊來說仍然保持整潔。 **

立即在您的儲存庫中進行設置,以保護您的程式碼審計追蹤!