Da Anonimo (non verificato) , 29 Aprile 2026

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

OpzioneDescrizione
-<n>Genera patch per gli ultimi n commit.
-o <dir>Scrive patch in una directory.
--cover-letterGenera 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.
--threadAggiunge 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