设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
-
2.52.0
2025-11-17
- 2.51.2 无变更
-
2.51.1
2025-10-15
-
2.51.0
2025-08-18
- 2.50.1 无更改
-
2.50.0
2025-06-16
- 2.47.1 → 2.49.1 无更改
-
2.47.0
2024-10-06
- 2.45.1 → 2.46.4 无变化
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.4 无更改
-
2.44.0
2024-02-23
- 2.43.2 → 2.43.7 无变更
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.41.1 → 2.42.4 无更改
-
2.41.0
2023-06-01
- 2.39.1 → 2.40.4 无更改
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 无更改
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 无更改
-
2.35.0
2022-01-24
- 2.33.1 → 2.34.8 无变化
-
2.33.0
2021-08-16
- 2.30.2 → 2.32.7 无更改
-
2.30.1
2021-02-08
-
2.30.0
2020-12-27
- 2.24.1 → 2.29.3 无更改
-
2.24.0
2019-11-04
- 2.23.1 → 2.23.4 无更改
-
2.23.0
2019-08-16
- 2.22.2 → 2.22.5 无更改
-
2.22.1
2019-08-11
- 2.21.1 → 2.22.0 无更改
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 无更改
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 无更改
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 无更改
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 无更改
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
- 2.15.4 无更改
-
2.14.6
2019-12-06
- 2.13.7 无更改
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 无更改
-
2.9.5
2017-07-30
- 2.8.6 无更改
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.2.3 无变更
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
概要
git send-email [<options>] (<file>|<directory>)…
git send-email [<options>] <format-patch-options>
git send-email --dump-aliases
git send-email --translate-aliases
描述
将命令行中指定的补丁通过电子邮件发送出去。补丁可以指定为文件、目录(将发送目录中的所有文件)或直接指定为修订列表。在后一种情况下,git-format-patch[1] 接受的任何格式都可以传递给 git send-email,以及 git-format-patch[1] 理解的选项。
电子邮件的标题可以通过命令行选项进行配置。如果未在命令行中指定,用户将被提示使用支持 ReadLine 的界面来提供必要的信息。
补丁文件接受两种格式
-
mbox 格式文件
这是 git-format-patch[1] 生成的内容。大多数标题和 MIME 格式都被忽略。
-
Greg Kroah-Hartman 的
send_lots_of_email.pl脚本使用的原始格式此格式要求文件的第一行包含
Cc:值,第二行包含消息的Subject:。
选项
撰写
- --annotate
-
审查并编辑您将要发送的每个补丁。默认为
sendemail.annotate的值。有关sendemail.multiEdit的信息,请参阅 CONFIGURATION 部分。 - --bcc=<address>,…
-
为每封电子邮件指定一个
Bcc:值。默认为sendemail.bcc的值。此选项可以指定多次。
- --cc=<address>,…
-
为每封电子邮件指定一个起始的
Cc:值。默认为sendemail.cc的值。此选项可以指定多次。
- --compose
-
调用文本编辑器(参见 git-var[1] 中的 GIT_EDITOR)来编辑补丁系列的介绍性消息。
当使用
--compose时,gitsend-email将使用消息中指定的From、To、Cc、Bcc、Subject、Reply-To和In-Reply-To标题。如果消息的正文(您在标题和空行后输入的内容)仅包含空白行(或以Git:开头的行),则不会发送摘要,但上述标题将被使用,除非被删除。将提示输入缺失的
From或In-Reply-To标题。有关
sendemail.multiEdit的信息,请参阅 CONFIGURATION 部分。 - --from=<address>
-
指定电子邮件的发件人。如果未在命令行中指定,则使用
sendemail.from配置选项的值。如果命令行选项和sendemail.from都未设置,则将提示用户输入该值。提示的默认值将是GIT_AUTHOR_IDENT的值,如果未设置,则为GIT_COMMITTER_IDENT的值,该值由gitvar-l返回。 - --reply-to=<address>
-
指定收件人回复的地址。如果消息的回复应发送到与
--from参数指定的地址不同的地址,请使用此选项。 - --in-reply-to=<identifier>
-
使第一封邮件(或所有带
--no-thread的邮件)显示为对给定 Message-ID 的回复,这可以避免破坏线程以提供新的补丁系列。第二封及后续邮件将根据--[no-]chain-reply-to设置作为回复发送。因此,例如,当指定
--thread和--no-chain-reply-to时,第二封及后续补丁将是对第一封补丁的回复,如下面的插图所示,其中 [PATCHv20/3] 是对 [PATCH0/2] 的回复[PATCH 0/2] Here is what I did... [PATCH 1/2] Clean up and tests [PATCH 2/2] Implementation [PATCH v2 0/3] Here is a reroll [PATCH v2 1/3] Clean up [PATCH v2 2/3] New tests [PATCH v2 3/3] Implementation仅当同时设置了
--compose时才需要。如果未设置--compose,则将提示输入。 - --outlook-id-fix
- --no-outlook-id-fix
-
Microsoft Outlook SMTP 服务器会丢弃通过电子邮件发送的 Message-ID 并分配一个新的随机 Message-ID,从而破坏线程。
使用
--outlook-id-fix时,gitsend-email使用 Outlook 服务器特有的机制来学习服务器分配的 Message-ID 以修复线程。仅当您知道服务器报告的重写 Message-ID 与 Outlook 服务器的方式相同时才使用此选项。默认情况下,当与 smtp.office365.com 或 smtp-mail.outlook.com 通信时,会执行此修复。使用
--no-outlook-id-fix来禁用,即使与这两个服务器通信时也是如此。 - --subject=<string>
-
指定电子邮件线程的初始主题。仅当同时设置了
--compose时才需要。如果未设置--compose,则将提示输入。 - --to=<address>,…
-
指定生成的电子邮件的主要收件人。通常,这将是相关项目的高级维护者。默认为
sendemail.to配置值的默认值;如果未指定,并且未指定--to-cmd,则将提示输入。此选项可以指定多次。
- --8bit-encoding=<encoding>
-
当遇到不含编码声明的非 ASCII 消息或主题时,添加标题/引用以指示其以 <encoding> 编码。默认为
sendemail.assume8bitEncoding的值;如果未指定,并且遇到任何非 ASCII 文件,则将提示输入。请注意,不会对编码进行任何验证。
- --compose-encoding=<encoding>
-
指定组合消息的编码。默认为
sendemail.composeEncoding的值;如果未指定,则假定为 UTF-8。 - --transfer-encoding=(7bit|8bit|quoted-printable|base64|auto)
-
指定用于通过 SMTP 发送消息的传输编码。
7bit在遇到非 ASCII 消息时会失败。quoted-printable在存储库包含包含回车符的文件时可能有用,但原始补丁电子邮件文件(从 MUA 保存的)手动检查起来会更加困难。base64更不易出错,但也更不透明。auto尽可能使用8bit,否则使用quoted-printable。默认为
sendemail.transferEncoding配置选项的值;如果未指定,则默认为auto。 - --xmailer
- --no-xmailer
-
添加(或阻止添加)
X-Mailer:标题。默认情况下,会添加标题,但可以通过将sendemail.xmailer配置变量设置为false来禁用它。
发送
- --envelope-sender=<address>
-
指定用于发送电子邮件的信封发件人。如果您的默认地址不是订阅列表的地址,这将非常有用。要使用
From地址,请将值设置为auto。如果您使用sendmail二进制文件,您必须具有-f参数的适当权限。默认为sendemail.envelopeSender配置变量的值;如果未指定,则由您的 MTA 选择信封发件人。 - --sendmail-cmd=<command>
-
指定一个要运行以发送电子邮件的命令。该命令应类似于 sendmail;具体来说,它必须支持
-i选项。如果需要,该命令将在 shell 中执行。默认为sendemail.sendmailCmd的值。如果未指定,并且--smtp-server也未指定,gitsend-email将在/usr/sbin、/usr/lib和$PATH中搜索sendmail。 - --smtp-encryption=<encryption>
-
指定 SMTP 连接加密的开始方式。有效值为
ssl和tls。任何其他值都会回退到纯(未加密)SMTP,默认端口为 25。尽管有这些名称,两个值都将使用相同的新版本 TLS,但出于历史原因而有这些名称。ssl指的是“隐式”加密(有时称为 SMTPS),默认使用端口 465。tls指的是“显式”加密(通常称为 STARTTLS),默认使用端口 25。 SMTP 服务器可能会使用其他端口,这些端口不是默认端口。tls和未加密的常用备用端口是 587。您需要检查您的提供商文档或服务器配置以确保适合您的情况。默认为sendemail.smtpEncryption的值。 - --smtp-domain=<FQDN>
-
指定在与 SMTP 服务器的 HELO/EHLO 命令中使用的完全限定域名 (FQDN)。某些服务器要求 FQDN 必须与您的 IP 地址匹配。如果未设置,
gitsend-email会尝试自动确定您的 FQDN。默认为sendemail.smtpDomain的值。 - --smtp-auth=<mechanisms>
-
空格分隔的允许的 SMTP-AUTH 机制列表。此设置强制只使用列出的机制。示例
$ git send-email --smtp-auth="PLAIN LOGIN GSSAPI" ...
如果指定的机制中至少有一个与 SMTP 服务器宣布的机制匹配,并且已获得所使用的 SASL 库的支持,则将使用该机制进行身份验证。如果未指定
sendemail.smtpAuth或--smtp-auth,则可以使用 SASL 库支持的所有机制。特殊值none可以指定为完全禁用身份验证,独立于--smtp-user。 - --smtp-pass[=<password>]
-
SMTP-AUTH 的密码。参数是可选的:如果未指定参数,则将空字符串用作密码。默认为
sendemail.smtpPass的值,但是--smtp-pass始终覆盖此值。此外,不必在配置文件或命令行中指定密码。如果已指定用户名(使用
--smtp-user或sendemail.smtpUser),但未指定密码(使用--smtp-pass或sendemail.smtpPass),则将使用 git-credential[1] 获取密码。 - --no-smtp-auth
-
禁用 SMTP 身份验证。
--smtp-auth=none的简写。 - --smtp-server=<host>
-
如果设置,则指定要使用的外出 SMTP 服务器(例如
smtp.example.com或原始 IP 地址)。如果未指定,并且--sendmail-cmd也未指定,则默认是在/usr/sbin、/usr/lib和$PATH中搜索sendmail(如果存在该程序),否则回退到localhost。为了向后兼容,此选项还可以指定 sendmail 类型程序的完整路径名;该程序必须支持
-i选项。此方法不支持传递参数或使用纯命令名称。对于这些用例,请考虑使用--sendmail-cmd。 - --smtp-server-port=<port>
-
指定一个与默认端口不同的端口(SMTP 服务器通常监听 25 号 SMTP 端口,但也可能监听 587 号提交端口,或 465 号常用 SSL SMTP 端口);符号端口名称(例如,
submission而不是 587)也接受。端口也可以使用sendemail.smtpServerPort配置变量设置。 - --smtp-server-option=<option>
-
如果设置,则指定要使用的外出 SMTP 服务器选项。默认值可以通过
sendemail.smtpServerOption配置选项指定。对于您想传递给服务器的每个选项,
--smtp-server-option选项必须重复。同样,配置文件中的不同行必须用于每个选项。 - --smtp-ssl
-
--smtp-encryptionssl的旧别名。 - --smtp-ssl-cert-path
-
用于 SMTP SSL/TLS 证书验证的可信 CA 证书存储的路径(可以是已通过
c_rehash处理的目录,或包含一个或多个 PEM 格式证书连接在一起的单个文件:有关这些信息,请参阅 https://docs.openssl.org/master/man1/openssl-verify/ [OpenSSL 的 verify(1) 手册页] 中的-CAfile<file> 和-CApath<dir> 选项)。将其设置为空字符串以禁用证书验证。默认为sendemail.smtpSSLCertPath配置变量的值(如果已设置),否则为后端 SSL 库中编译的默认值(在大多数平台上应该是最佳选择)。 - --smtp-user=<user>
-
SMTP-AUTH 的用户名。默认为
sendemail.smtpUser的值;如果未指定用户名(使用--smtp-user或sendemail.smtpUser),则不尝试身份验证。 - --smtp-debug=(0|1)
-
启用 (1) 或禁用 (0) 调试输出。如果启用,将打印 SMTP 命令和响应。用于调试 TLS 连接和身份验证问题。
- --imap-sent-folder=<folder>
-
某些电子邮件提供商(例如 iCloud)在通过 SMTP 发送电子邮件时不会将副本发送到您的邮箱中的
Sent文件夹或类似文件夹。使用此选项通过gitimap-send将电子邮件副本发送到使用此选项指定的文件夹。您可以运行gitimap-send--list来获取有效文件夹名称的列表,包括您邮箱中Sent文件夹的正确名称。您也可以使用此选项将电子邮件发送到您选择的专用 IMAP 文件夹。此功能需要设置
gitimap-send。请参阅 git-imap-send[1] 以获取说明。 - --use-imap-only
- --no-use-imap-only
-
如果设置了此选项,所有电子邮件将仅复制到使用
--imap-sent-folder或sendemail.imapSentFolder指定的 IMAP 文件夹,而不会发送给收件人。如果您只想创建电子邮件草稿并使用其他电子邮件客户端发送它们,则此选项很有用。如果使用--no-use-imap-only禁用,电子邮件将像往常一样发送。默认情况下禁用,但sendemail.useImapOnly配置变量可用于启用它。此功能需要设置
gitimap-send。请参阅 git-imap-send[1] 以获取说明。 - --batch-size=<num>
-
某些电子邮件服务器(例如 smtp.163.com)会限制每个会话(连接)发送的电子邮件数量,当发送大量消息时会导致失败。使用此选项,send-email 将在发送 <num> 条消息后断开连接,等待几秒钟(请参阅
--relogin-delay)然后重新连接,以绕过此类限制。您可能需要使用某种凭据助手来避免每次发生这种情况时都必须重新输入密码。默认为sendemail.smtpBatchSize配置变量。 - --relogin-delay=<int>
-
在重新连接到 SMTP 服务器之前等待 <int> 秒。与
--batch-size选项一起使用。默认为sendemail.smtpReloginDelay配置变量。
自动化
- --no-to
- --no-cc
- --no-bcc
-
清除通过配置之前设置的任何
To:、Cc:、Bcc:地址列表。 - --no-identity
-
清除之前通过配置设置的
sendemail.identity的值(如果有)。 - --to-cmd=<command>
-
为每个补丁文件指定一个要执行的命令,该命令应生成特定于补丁文件的
To:条目。此命令的输出必须是每行一个电子邮件地址。默认为sendemail.toCmd配置值的默认值。 - --cc-cmd=<command>
-
为每个补丁文件指定一个要执行的命令,该命令应生成特定于补丁文件的
Cc:条目。此命令的输出必须是每行一个电子邮件地址。默认为sendemail.ccCmd配置值的默认值。 - --header-cmd=<command>
-
指定一个命令,该命令对每个传出的消息执行一次,并将 RFC 2822 样式的标题行输出到其中。当设置了
sendemail.headerCmd配置变量时,其值将始终被使用。当在命令行中提供了--header-cmd时,其值优先于sendemail.headerCmd配置变量。 - --no-header-cmd
-
禁用任何正在使用的标题命令。
- --chain-reply-to
- --no-chain-reply-to
-
如果设置了此选项,则每封电子邮件都将作为对上一封电子邮件的回复发送。如果使用
--no-chain-reply-to禁用,则除第一封邮件外,所有后续邮件都将作为对第一封邮件的回复发送。使用此选项时,建议将第一个文件作为整个补丁系列的概述。默认情况下禁用,但sendemail.chainReplyTo配置变量可用于启用它。 - --identity=<identity>
-
一个配置标识。当给定此参数时,
sendemail.<identity> 子节中的值将优先于sendemail部分中的值。默认标识是sendemail.identity的值。 - --signed-off-by-cc
- --no-signed-off-by-cc
-
如果设置了此选项,则将
Signed-off-by尾部或Cc:行中的电子邮件添加到 cc 列表中。默认为sendemail.signedOffByCc配置值的默认值;如果未指定,则默认为--signed-off-by-cc。 - --cc-cover
- --no-cc-cover
-
如果设置了此选项,则将系列中第一封补丁(通常是封面信)的
Cc:标题中的电子邮件添加到每个电子邮件集的 cc 列表中。默认为sendemail.ccCover配置值的默认值;如果未指定,则默认为--no-cc-cover。 - --to-cover
- --no-to-cover
-
如果设置了此选项,则将系列中第一封补丁(通常是封面信)的
To:标题中的电子邮件添加到每个电子邮件集的 to 列表中。默认为sendemail.toCover配置值的默认值;如果未指定,则默认为--no-to-cover。 - --suppress-cc=<category>
-
指定一个额外的收件人类别来抑制自动 cc:
-
author将避免包含补丁作者。 -
self将避免包含发送者。 -
cc将避免包含补丁标题中 Cc 行中的任何人,除了发送者(使用self来处理)。 -
bodycc将避免包含补丁正文(提交消息)中的 Cc 行中的任何人,除了发送者(使用self来处理)。 -
sob将避免包含 Signed-off-by 尾部中的任何人,除了发送者(使用self来处理)。 -
misc-by将避免包含补丁正文中 Acked-by、Reviewed-by、Tested-by 和其他 "-by" 行中的任何人,除了 Signed-off-by(使用sob来处理)。 -
cccmd将避免运行 --cc-cmd。 -
body等同于sob+bodycc+misc-by。 -
all将抑制所有自动 cc 值。
默认为
sendemail.suppressCc配置值的默认值;如果未指定,则如果指定了--suppress-from,则默认为self,如果指定了--no-signed-off-cc,则默认为body。 -
- --suppress-from
- --no-suppress-from
-
如果设置了此选项,则不将
From:地址添加到Cc:列表。默认为sendemail.suppressFrom配置值的默认值;如果未指定,则默认为--no-suppress-from。 - --thread
- --no-thread
-
如果设置了此选项,则
In-Reply-To和References标题将被添加到发送的每封电子邮件。每封邮件是否引用前一封邮件(按gitformat-patch的说法是“深度”线程)还是引用第一封邮件(“浅”线程)由--[no-]chain-reply-to控制。如果使用
--no-thread禁用,则不会添加这些标题(除非使用--in-reply-to指定)。默认为sendemail.thread配置选项的值;如果未指定,则默认为--thread。由用户负责确保在
gitsend-email被要求添加 In-Reply-To 标题时,该标题尚不存在(特别注意gitformat-patch可以配置为自行处理线程)。否则可能无法在收件人的 MUA 中产生预期的结果。 - --mailmap
- --no-mailmap
-
使用 mailmap 文件(请参阅 gitmailmap[5])将所有地址映射到其规范的真实姓名和电子邮件地址。可以使用
sendemail.mailmap.file或sendemail.mailmap.blob配置值提供特定于gitsend-email的其他 mailmap 数据。默认为sendemail.mailmap。
管理
- --confirm=<mode>
-
发送前确认
-
always将在发送前始终确认。 -
never将在发送前从不确认。 -
cc当 send-email 自动将来自补丁的地址添加到 Cc 列表时,将在发送前确认。 -
compose在使用 --compose 发送第一条消息前确认。 -
auto等同于cc+compose。
默认为
sendemail.confirm配置选项的值;如果未指定,则默认为auto,除非指定了任何抑制选项,在这种情况下,默认为compose。 -
- --dry-run
-
执行所有操作,但实际上不发送电子邮件。
- --format-patch
- --no-format-patch
-
当参数可能既被理解为引用又被理解为文件名时,选择将其理解为 format-patch 参数(
--format-patch)或文件名(--no-format-patch)。默认情况下,当发生此类冲突时,gitsend-email将失败。 - --quiet
-
使
gitsend-email的输出更少。每封电子邮件只输出一行。 - --validate
- --no-validate
-
对补丁执行健全性检查。目前,验证意味着以下内容
-
如果存在,则调用 sendemail-validate 钩子(请参阅 githooks[5])。
-
警告包含行长超过 998 个字符的补丁,除非使用了合适的传输编码(
auto、base64或quoted-printable);这是由于 SMTP 限制,如 https://www.ietf.org/rfc/rfc5322.txt 所述。
默认为
sendemail.validate的值;如果未设置,则默认为--validate。 -
- --force
-
即使安全检查会阻止,也发送电子邮件。
配置
本节中以下所有内容均从 git-config[1] 文档中选择性地包含。内容与彼处相同:
- sendemail.identity
-
一个配置标识。当给定此参数时,
sendemail.<identity> 子节中的值将优先于sendemail部分中的值。默认标识是sendemail.identity的值。 - sendemail.smtpEncryption
-
请参阅 git-send-email[1] 中的描述。请注意,此设置不受
identity机制的影响。 - sendemail.smtpSSLCertPath
-
CA 证书的路径(可以是目录或单个文件)。将其设置为空字符串以禁用证书验证。
- sendemail.<identity>.*
-
下面找到的
sendemail.*参数的特定于标识的版本,当通过命令行或sendemail.identity选择此标识时,这些参数优先于sendemail.*部分中的参数。 - sendemail.multiEdit
-
如果设置为
true(默认),将启动一个编辑器实例来编辑您需要编辑的文件(使用--annotate时为补丁,使用--compose时为摘要)。如果设置为false,文件将逐个编辑,每次启动一个新的编辑器。 - sendemail.confirm
-
设置发送前确认的默认值。必须是以下选项之一:
always,never,cc,compose, 或auto。有关这些值的含义,请参阅 git-send-email[1] 文档中的--confirm。 - sendemail.mailmap
-
如果为
true,则 git-send-email[1] 假定使用--mailmap;否则,假定使用--no-mailmap。默认值为false。 - sendemail.mailmap.file
-
一个特定于 git-send-email[1] 的补充 mailmap 文件的位置。默认的 mailmap 和
mailmap.file会先加载。因此,此文件中的条目优先于默认 mailmap 位置中的条目。请参阅 gitmailmap[5]。 - sendemail.mailmap.blob
-
类似于
sendemail.mailmap.file,但将值视为仓库中的 blob 引用。sendemail.mailmap.file中的条目优先于此处的值。请参阅 gitmailmap[5]。 - sendemail.aliasesFile
-
为避免输入冗长的电子邮件地址,请将其指向一个或多个电子邮件别名文件。您还必须提供
sendemail.aliasFileType。 - sendemail.aliasFileType
-
在 sendemail.aliasesFile 中指定的文件的格式。必须是以下选项之一:
mutt,mailrc,pine,elm,gnus, 或sendmail。各种格式的别名文件长什么样子可以在同名电子邮件程序的文档中找到。标准格式的差异和限制如下所述。
- sendemail.annotate
- sendemail.bcc
- sendemail.cc
- sendemail.ccCmd
- sendemail.chainReplyTo
- sendemail.envelopeSender
- sendemail.from
- sendemail.headerCmd
- sendemail.signedOffByCc
- sendemail.smtpPass
- sendemail.suppressCc
- sendemail.suppressFrom
- sendemail.to
- sendemail.toCmd
- sendemail.smtpDomain
- sendemail.smtpServer
- sendemail.smtpServerPort
- sendemail.smtpServerOption
- sendemail.smtpUser
- sendemail.imapSentFolder
- sendemail.useImapOnly
- sendemail.thread
- sendemail.transferEncoding
- sendemail.validate
- sendemail.xmailer
-
所有这些配置变量都为 git-send-email[1] 命令行选项提供了默认值。有关详细信息,请参阅其文档。
- sendemail.outlookidfix
-
如果为
true,则 git-send-email[1] 假定使用--outlook-id-fix;如果为false,则假定使用--no-outlook-id-fix。如果未指定,其行为将与未指定--outlook-id-fix时相同。 - sendemail.signedOffCc (已弃用)
-
已弃用的
sendemail.signedOffByCc的别名。 - sendemail.smtpBatchSize
-
每个连接发送的消息数量,之后会重新登录。如果值为
0或未定义,则在一个连接中发送所有消息。另请参阅 git-send-email[1] 的--batch-size选项。 - sendemail.smtpReloginDelay
-
重新连接到 smtp 服务器之前等待的秒数。另请参阅 git-send-email[1] 的
--relogin-delay选项。 - sendemail.forbidSendmailVariables
-
为避免常见的配置错误,如果存在任何
sendmail的配置选项,git-send-email[1] 将中止并发出警告。设置此变量可绕过检查。
SMTP 服务器示例
将 Gmail 用作 SMTP 服务器
要使用 git send-email 通过 Gmail SMTP 服务器发送您的补丁,请编辑 ~/.gitconfig 以指定您的帐户设置。
[sendemail] smtpEncryption = ssl smtpServer = smtp.gmail.com smtpUser = yourname@gmail.com smtpServerPort = 465
Gmail 不允许您为 git send-email 使用普通密码。如果您的 Gmail 帐户设置了多因素身份验证,您可以生成一个特定于应用程序的密码供 git send-email 使用。访问 https://security.google.com/settings/security/apppasswords 创建它。
或者,您也可以不使用特定于应用程序的密码,而是使用 Gmail 进行 OAuth2.0 身份验证。OAuth2.0 比特定于应用程序的密码更安全,无论您是否设置了多因素身份验证都能正常工作。OAUTHBEARER 和 XOAUTH2 是用于此类身份验证的常见机制。Gmail 支持这两种机制。例如,如果您想使用 OAUTHBEARER,请编辑您的 ~/.gitconfig 文件,并在您的帐户设置中添加 smtpAuth = OAUTHBEARER。
[sendemail] smtpEncryption = ssl smtpServer = smtp.gmail.com smtpUser = yourname@gmail.com smtpServerPort = 465 smtpAuth = OAUTHBEARER
另一种选择是使用 Google 开发的名为 sendgmail 的工具,通过 git send-email 发送电子邮件。
将 Microsoft Outlook 用作 SMTP 服务器
与 Gmail 不同,Microsoft Outlook 不再支持特定于应用程序的密码。因此,必须使用 OAuth2.0 身份验证来访问 Outlook。此外,它仅支持 XOAUTH2 身份验证机制。
编辑 ~/.gitconfig 以指定您的 Outlook 帐户设置,并使用其 SMTP 服务器与 git send-email 一起使用。
[sendemail] smtpEncryption = tls smtpServer = smtp.office365.com smtpUser = yourname@outlook.com smtpServerPort = 587 smtpAuth = XOAUTH2
发送补丁
当您的提交准备好发送到邮件列表时,请运行以下命令:
$ git format-patch --cover-letter -M origin/master -o outgoing/ $ edit outgoing/0000-* $ git send-email outgoing/*
第一次运行时,系统会提示您输入凭据。根据需要输入特定于应用程序的密码或您的普通密码。
如果您配置了凭据助手(请参阅 git-credential[1]),密码将保存在凭据存储中,这样下次就不必再次输入。
如果您使用 OAuth2.0 身份验证,在提示时需要使用访问令牌而不是密码。在线有各种 OAuth2.0 令牌生成器。社区维护的凭据助手也可用。
-
git-credential-gmail (跨平台,用于验证 Gmail 帐户的专用助手)
-
git-credential-outlook (跨平台,用于验证 Microsoft Outlook 帐户的专用助手)
-
git-credential-yahoo (跨平台,用于验证 Yahoo 帐户的专用助手)
-
git-credential-aol (跨平台,用于验证 AOL 帐户的专用助手)
您还可以参考 gitcredentials[7] 以了解更多基于 OAuth 的身份验证助手。
Proton Mail 不提供用于发送电子邮件的 SMTP 服务器。如果您是 Proton Mail 的付费客户,您可以使用 Proton Mail 官方提供的 Proton Mail Bridge 来创建本地 SMTP 服务器以发送电子邮件。对于免费和付费用户,都可以使用社区维护的项目,例如 git-protonmail。
注意:您的 Perl 发行版可能需要安装以下核心 Perl 模块:
还需要以下附加 Perl 模块:
利用 git send-email 的 sendmailCmd 选项
除了通过 SMTP 服务器发送电子邮件外,git send-email 还可以通过任何支持 sendmail 命令的应用程序发送电子邮件。您可以阅读有关 --sendmail-cmd=<command> 的文档以获取更多信息。如果您想使用另一个应用程序作为 git send-email 的 SMTP 客户端,或者您的电子邮件提供商使用专有 API 而非 SMTP 发送电子邮件,这项功能将非常有用。
例如,让我们看看如何配置 msmtp,这是许多 Linux 发行版中流行的 SMTP 客户端。编辑 ~/.gitconfig 以指示 git-send-email 使用它发送电子邮件。
[sendemail] sendmailCmd = /usr/bin/msmtp # Change this to the path where msmtp is installed
一些此类社区维护的助手链接如下:
-
msmtp (流行的多功能 SMTP 客户端,适用于 Linux 和 macOS)
-
git-protonmail (跨平台客户端,可使用 ProtonMail API 发送电子邮件)
-
git-msgraph (跨平台客户端,可使用 Microsoft Graph API 发送电子邮件)
另请参阅
git-format-patch[1]、git-imap-send[1]、mbox(5)