Sinopsis
git format-patch [<options>] <range>
git format-patch -1 <commit>
Descripción
El comando git format-patch exporta una serie de commits como archivos individuales en formato email, listos para enviar a una mailing list o aplicar con git am. Cada archivo incluye autor, fecha, mensaje y diff.
Usos típicos: git format-patch origin/main exporta tus commits no pusheados; --stdout los concatena en uno solo.
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 |
|---|---|
-<n> | Generate patches for the last n commits. |
-o <dir> | Write patches to a directory. |
--cover-letter | Generate a 0000 cover letter for the series. |
-v <n>, --reroll-count=<n> | Mark patches as the n-th iteration. |
--subject-prefix=<prefix> | Custom subject prefix (default PATCH). |
--to=<addr> / --cc=<addr> | Add recipients in headers. |
--thread | Add In-Reply-To headers. |
Ejemplos
git format-patch -3
# Patches for the last 3 commits, in CWD
git format-patch -o ../patches main..feature
# Patches from main to feature, into ../patches/
git format-patch --cover-letter -v2 origin/main
# Versioned series with a cover letter
git format-patch --subject-prefix="PATCH myproj" -1 HEAD
# Custom subject for a project-specific list
Errores comunes
Generating patches against the wrong base produces apply failures for reviewers — pick the right upstream. Without --cover-letter, a multi-patch series has no introduction; reviewers appreciate one. Reroll without -v creates ambiguity about which version is being reviewed.
Comandos relacionados
git am, git send-email, git request-pull, git range-diff