Git

名稱

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@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