名称

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