Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.51.1 → 2.54.0 no changes
-
2.51.0
2025-08-18
- 2.43.2 → 2.50.1 no changes
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.38.1 → 2.42.4 no changes
-
2.38.0
2022-10-02
- 2.29.1 → 2.37.7 no changes
-
2.29.0
2020-10-19
- 2.20.1 → 2.28.1 no changes
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.4.12 → 2.17.6 no changes
-
2.3.10
2015-09-28
-
2.2.3
2015-09-04
- 2.1.4 no changes
-
2.0.5
2014-12-17
描述
这条命令将用 git format-patch 生成的邮箱上传到 IMAP 的 drafts 文件夹。 这允许在使用不能直接读取邮箱文件的邮件客户端时,将补丁作为其他邮件发送。该命令也适用于任何一般的邮箱,其中的邮件按顺序有 "Form"、Date 和 Subject 字段。
典型的用法是这样的:
$ git format-patch --signoff --stdout --attach origin | git imap-send
选项
- -v
- --verbose
-
详细日志。
- -q
- --quiet
-
静默运行。
- -f <文件>
- --filter=<过滤器定义>
-
指定用于保存邮件的文件夹。例如:
--folder=[Gmail]/Drafts或-fINBOX/Drafts。 - --curl
-
使用 libcurl 与 IMAP 服务器通信,除非通过隧道进入。 如果 Git 在构建时没有设置 USE_CURL_FOR_IMAP_SEND 选项,则会被忽略。
- --no-curl
-
使用 git 自己的 IMAP 例程与 IMAP 服务器对话,而不是使用 libcurl。 如果 Git 在构建时设置了 NO_OPENSSL 选项,则忽略。
- --list
-
运行 IMAP LIST 命令以输出所有现有文件夹的列表。
配置
要使用该工具,imap.folder 和 imap.tunnel 或 imap.host 必须被设置为适当的值。
本节中这一行以上的内容并不包括在 git-config[1] 文档中。下面的内容与那里的内容相同:
|
Warning
|
Missing See original version for this content. |
获取可用文件夹列表
要将邮件发送到特定文件夹,你需要知道邮箱中目标文件夹的正确名称。各种邮件客户端显示的诸如“Junk”“Trash”等名称,不一定是你的邮件服务提供商服务器上实际存储的文件夹名称。
要获得可供 git imap-send 使用的正确文件夹名,可以运行 git imap-send --list。这会显示一个有效文件夹名称列表。在 Gmail 账户上运行时,输出示例如下:
* LIST (\HasNoChildren) "/" "INBOX" * LIST (\HasChildren \Noselect) "/" "[Gmail]" * LIST (\All \HasNoChildren) "/" "[Gmail]/All Mail" * LIST (\Drafts \HasNoChildren) "/" "[Gmail]/Drafts" * LIST (\HasNoChildren \Important) "/" "[Gmail]/Important" * LIST (\HasNoChildren \Sent) "/" "[Gmail]/Sent Mail" * LIST (\HasNoChildren \Junk) "/" "[Gmail]/Spam" * LIST (\Flagged \HasNoChildren) "/" "[Gmail]/Starred" * LIST (\HasNoChildren \Trash) "/" "[Gmail]/Trash"
这里可以看出,“Junk” 文件夹的正确名称是 [Gmail]/Spam,“Trash” 文件夹的正确名称是 [Gmail]/Trash。其他文件夹也可以用同样的方法确定。
实例
使用隧道模式:
[imap]
folder = "INBOX.Drafts"
tunnel = "ssh -q -C user@example.com /usr/bin/imapd ./Maildir 2> /dev/null"
使用直接模式:
[imap]
folder = "INBOX.Drafts"
host = imap://imap.example.com
user = bob
pass = p4ssw0rd
使用 SSL 的直接模式:
[imap]
folder = "INBOX.Drafts"
host = imaps://imap.example.com
user = bob
pass = p4ssw0rd
port = 123
; sslVerify = false
|
Note
|
在排除故障时,如果你怀疑连接有问题的原因是你在试图建立(或已经建立)的私人服务器 example.com`上使用的证书可能没有被正确验证,你可能想使用 `sslVerify=false。 |
使用 Gmail 的 IMAP 界面:
[imap] folder = "[Gmail]/Drafts" host = imaps://imap.gmail.com user = user@gmail.com port = 993
Gmail 不允许在 git imap-send 中使用你的常规密码。如果你的 Gmail 账户启用了多因素认证,可以生成一个供 git imap-send 使用的应用专用密码。请访问 https://security.google.com/settings/security/apppasswords 创建。或者,也可以使用下文所述的 OAuth2.0 认证。
|
Note
|
如果你收到“Folder doesn’t exist”错误,可能需要改用:folder = "[Google Mail]/Drafts"。你也可以 运行 git imap-send --list 获取可用文件夹列表。
|
|
Note
|
如果你的 Gmail 账户被设置为英语以外的其他语言,"Drafts" 文件夹的名称将被本地化。 |
如果你想使用基于 OAuth2.0 的认证,可以在配置中指定 OAUTHBEARER 或 XOAUTH2 机制。它比使用应用专用密码更安全,也不强制要求启用多因素认证。使用这种认证时,你需要用 OAuth2.0 access token 代替密码。
[imap]
folder = "[Gmail]/Drafts"
host = imaps://imap.gmail.com
user = user@gmail.com
port = 993
authmethod = OAUTHBEARER
使用 Outlook 的 IMAP 接口:
与 Gmail 不同,Outlook 只支持基于 OAuth2.0 的认证,并且仅支持 XOAUTH2 这一机制。
[imap]
folder = "Drafts"
host = imaps://outlook.office365.com
user = user@outlook.com
port = 993
authmethod = XOAUTH2
一旦准备好发送提交,请运行以下命令:
$ git format-patch --cover-letter -M --stdout origin/master | git imap-send
只要确保禁用电子邮件客户端的换行功能(Gmail 的网络界面无论如何都会换行,所以你需要使用真正的 IMAP 客户端)。
如果你使用的是 OAuth2.0 认证,使用 credential helper 生成 token 会更方便。git-send-email[1] 中建议的 credential helper 同样可以用于 git imap-send。
小心
你仍然有责任确保你的电子邮件程序所发送的电子邮件符合你的项目的标准。 许多项目不喜欢附加补丁。 一些邮件代理会对补丁进行转换(例如,包行,以 format=flowed 的方式发送),使其失败。 如果你不检查这个,你会得到愤怒的火苗。
尤其是Thunderbird,众所周知,它存在问题。 Thunderbird 用户可能希望访问这个网页以了解更多信息: https://kb.mozillazine.org/Plain_text_e-mail_-_Thunderbird#Completely_plain_email
参见
git-format-patch[1], git-send-email[1], mbox(5)
GIT
属于 git[1] 文档