Command Reference

git-send-email 教程

将 `format-patch` 产出的补丁序列按邮件线程发送给维护者或邮件列表,适用于内核式补丁协作流程。

适合谁看
  • 已经会基本提交和分支操作的开发者
  • 想理解命令边界与风险的人
前置知识
  • 知道工作区、暂存区、提交的基本关系
  • 能读懂 `git status` 和简单历史图
常见风险
  • 误把本地整理命令用到共享历史
  • 在没确认恢复路径前直接继续改写历史

一句话理解

git send-email 用于把补丁序列按邮件格式发送出去,并保留提交边界与讨论线程。

典型使用场景

  • 邮件列表驱动的开源协作
  • 维护者要求 patch-by-email 流程
  • 无法直接访问托管平台的环境

常见配套流程

git format-patch -3 origin/main
git send-email *.patch

先生成补丁,再发送邮件。

发送前必须确认

  1. SMTP 配置与认证可用
  2. 收件人(To/Cc)准确
  3. 线程关系(主题前缀、回复链)符合维护者要求
  4. 补丁顺序与 cover letter 完整

更稳的发送方式

先小范围 dry-run 或发送给自己验证:

git send-email --dry-run *.patch

常见失败点

  • 邮件编码/换行导致补丁损坏
  • 主题前缀不符合列表规范
  • 丢了某一封中间补丁导致序列断裂
先 dry-run 再正式发

邮件补丁一旦发送到公开列表,修正成本和沟通成本都会变高。先验证格式与线程关系是最低成本保险。

git send-email 把补丁文件作为邮件通过 SMTP 发送到邮件列表或维护者。理解它时,要明确它只负责传输,不修改仓库历史也不更新任何跟踪引用。

接下来建议继续看什么

  1. git-format-patch
  2. git-request-pull
  3. open source fork pr contribution
  • 把 format-patch 生成的补丁文件发送到开源项目的邮件列表进行代码评审。
  • 在补丁工作流中,作为补丁从本地到达审阅者的最后一步:format-patch 导出,send-email 发送。
  • --dry-run 预览邮件头和收件人,确认格式正确后再真正发送。

图例理解

补丁邮件发送的作用面补丁邮件发送命令负责把本地补丁文件传输到审阅者,关键在于正确配置 SMTP 和维护邮件线程关系。
输入
补丁文件(.patch)SMTP 配置
结果
已发送的邮件邮件列表中的补丁序列
send-email 只负责传输,不会修改本地仓库的任何内容。

特殊情况与边界

  • 真正发送前最好先做 --dry-run 或小范围测试,确认收件人、线程关系和编码都正确。
  • 需要预先配置 SMTP 服务器信息,可以用 --smtp-server 命令行指定或写在 Git 配置中。
  • 补丁文件的命名顺序和 In-Reply-To / References 邮件头决定了邮件的线程关系。
  • send-email 不修改补丁文件内容,发送前应确保补丁本身格式完整、没有多余的空行或截断。

延伸阅读

继续搭配 git status、git log、git show 一起看,通常更容易判断这条命令对历史、索引和工作区分别造成了什么影响。