Sinopsis
git send-email [--to <addr>] [--cc <addr>] [--cover-letter] <patch-or-dir>...
Descripción
El comando git send-email envía una serie de archivos de patch (típicamente generados por format-patch) directamente como emails desde Git. Maneja headers de email, threading y direccionamiento.
Esencial para contribuir a proyectos basados en mailing list. Configura tu servidor SMTP en .gitconfig y usa git send-email [email protected] *.patch.
En el uso diario, este comando se integra estrechamente con alias de shell, plugins de editor e integración continua. Los usuarios avanzados a menudo añaden alias que combinan los flags que siempre pasan. El formato de salida puede personalizarse vía configuración de Git. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.
Entender cómo este comando interactúa con el resto del modelo de datos de Git rinde dividendos. Cada comando opera sobre algún subconjunto de las piezas (objetos, index, refs, árbol de trabajo), y saber cuáles toca ayuda a predecir resultados y a recuperarse de errores.
Opciones comunes
| Opción | Descripción |
|---|---|
--to=<addr> | Primary recipient. |
--cc=<addr> | Carbon copy. |
--smtp-server=<host> | SMTP server (or sendmail path). |
--smtp-user=<user> | SMTP username. |
--annotate | Allow editing each patch before sending. |
--dry-run | Show what would be sent. |
--in-reply-to=<message-id> | Thread under an existing message. |
--confirm=<mode> | Confirmation behavior (always, never, cc). |
Ejemplos
git send-email [email protected] *.patch
# Send all patches in CWD to a list
git send-email --cover-letter [email protected] \
[email protected] 0001-*.patch
# Series with cover letter, primary + cc
git send-email --dry-run --annotate -1 HEAD
# Preview a single patch without sending
git config --global sendemail.smtpServer smtp.gmail.com
git config --global sendemail.smtpServerPort 587
git config --global sendemail.smtpEncryption tls
# One-time SMTP configuration
Errores comunes
Many corporate SMTP servers block plain SMTP — use TLS or app-specific passwords. Forgetting --cover-letter when sending a multi-patch series leaves reviewers without context. Sending a re-roll without --in-reply-to the original cover letter fragments the discussion.
Comandos relacionados
git format-patch, git am, git request-pull, git config