名稱

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>

注意事項

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

示例

你的歷史記錄包含兩個作者 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] 套件的一部分

scroll-to-top