名稱

gitmailmap - 對映作者/提交者姓名和/或電子郵件地址

概要

$GIT_WORK_TREE/.mailmap

描述

如果檔案 .mailmap 存在於倉庫的頂級目錄,或者存在於 mailmap.filemailmap.blob 配置選項指向的位置(請參閱 git-config[1]),則會使用它來將作者和提交者的姓名及電子郵件地址對映到規範的真實姓名和電子郵件地址。

語法

# 字元開始一行直到行尾的註釋,空行將被忽略。

在簡單形式下,檔案中的每一行都由作者的規範真實姓名、空格以及提交中使用的電子郵件地址(用<>括起來)組成,用於對映到姓名。例如

Proper Name <commit@email.xx>

更復雜的格式是

<proper@email.xx> <commit@email.xx>

這允許 mailmap 僅替換提交的電子郵件部分,並且

Proper Name <proper@email.xx> <commit@email.xx>

這允許 mailmap 替換匹配指定提交電子郵件地址的提交的姓名和電子郵件,並且

Proper Name <proper@email.xx> Commit Name <commit@email.xx>

這允許 mailmap 替換匹配指定提交姓名和電子郵件地址的提交的姓名和電子郵件。

電子郵件和姓名都進行不區分大小寫的匹配。例如,這也會匹配上面的 Commit Name <commit@email.xx>

Proper Name <proper@email.xx> CoMmIt NaMe <CoMmIt@EmAiL.xX>

注意事項

Git 在訪問工作樹中的 .mailmap 檔案時不會遵循符號連結。這使得在從索引或樹訪問檔案與從檔案系統訪問檔案時行為保持一致。

示例

您的歷史記錄包含 Jane 和 Joe 的提交,他們的姓名在倉庫中以多種形式出現

Joe Developer <joe@example.com>
Joe R. Developer <joe@example.com>
Jane Doe <jane@example.com>
Jane Doe <jane@laptop.(none)>
Jane D. <jane@desktop.(none)>

現在假設 Joe 希望使用他的中間名首字母,而 Jane 更喜歡她的姓氏拼寫完整。用於糾正姓名的 .mailmap 檔案看起來會是這樣

Joe R. Developer <joe@example.com>
Jane Doe <jane@example.com>
Jane Doe <jane@desktop.(none)>

請注意,不需要為 <jane@laptop.(none)> 對映姓名來僅糾正姓名。但是,通常不希望將明顯錯誤的 <jane@laptop.(none)><jane@desktop.(none)> 電子郵件保留原樣。一個也糾正這些的 .mailmap 檔案是

Joe R. Developer <joe@example.com>
Jane Doe <jane@example.com> <jane@laptop.(none)>
Jane Doe <jane@example.com> <jane@desktop.(none)>

最後,假設 Joe 和 Jane 共享一個電子郵件地址,但不共享姓名,例如,透過在錯誤報告系統中生成的歷史記錄中有以下兩個提交。即,姓名在歷史記錄中顯示為

Joe <bugs@example.com>
Jane <bugs@example.com>

一個完整的 .mailmap 檔案,其中也處理了這些情況(在上面的示例中添加了兩行)將是

Joe R. Developer <joe@example.com>
Jane Doe <jane@example.com> <jane@laptop.(none)>
Jane Doe <jane@example.com> <jane@desktop.(none)>
Joe R. Developer <joe@example.com> Joe <bugs@example.com>
Jane Doe <jane@example.com> Jane <bugs@example.com>

另請參閱

GIT

Git[1] 套件的一部分