Sinossi
git format-patch [<options>] <range>
git format-patch -1 <commit>
Descrizione
Il comando git format-patch produce un file di patch in formato mailbox per ogni commit in un range, pronto per essere applicato con git am o inviato con git send-email. Ogni patch include il messaggio di commit, autore, data e il diff. Le patch sono numerate (0001-..., 0002-...) così si applicano in ordine.
Questo è il formato che il kernel Linux e molti progetti open source usano per code review su mailing list. Anche progetti che usano pull request a volte accettano patch via email, e format-patch è il produttore standard.
Nell'uso quotidiano, git format-patch si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
-<n> | Genera patch per gli ultimi n commit. |
-o <dir> | Scrive patch in una directory. |
--cover-letter | Genera una cover letter 0000 per la serie. |
-v <n>, --reroll-count=<n> | Marca le patch come n-esima iterazione. |
--subject-prefix=<prefix> | Prefisso oggetto personalizzato (default PATCH). |
--to=<addr> / --cc=<addr> | Aggiunge destinatari negli header. |
--thread | Aggiunge header In-Reply-To. |
Esempi
git format-patch -3
# Patch per gli ultimi 3 commit, in CWD
git format-patch -o ../patches main..feature
# Patch da main a feature, in ../patches/
git format-patch --cover-letter -v2 origin/main
# Serie versionata con cover letter
git format-patch --subject-prefix="PATCH myproj" -1 HEAD
# Subject personalizzato per una lista specifica del progetto
Errori comuni
Generare patch contro la base sbagliata produce fallimenti di applicazione per i revisori — scegli l'upstream giusto. Senza --cover-letter, una serie multi-patch non ha introduzione; i revisori la apprezzano. Reroll senza -v crea ambiguità su quale versione viene revisionata.
Comandi correlati
git am, git send-email, git request-pull, git range-diff