Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git am [--3way] [--abort] [--continue] [--skip] <mbox>...

Descrizione

Il comando git am applica patch da un file mailbox — il tipo prodotto da git format-patch o generato emailando un diff. A differenza di git apply, che applica solo il contenuto del diff, git am ricrea ogni patch come un commit, preservando autore, data, messaggio e altri metadati incorporati nell'email.

Questa è la base del workflow di contribuzione email-based usato dal kernel Linux e altri progetti: i maintainer ricevono patch via email, le salvano in una mailbox e le applicano con git am. Il risultato è esattamente la stessa serie di commit che l'autore ha creato.

Nell'uso quotidiano, git am si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
--3wayRicade su merge a tre vie se la patch non si applica pulitamente.
--abortCancella un am in corso.
--continue / --resolvedContinua dopo aver corretto i conflitti.
--skipSalta la patch corrente.
-s, --signoffAggiunge trailer Signed-off-by.
-kPassa -k a mailinfo (mantiene il subject).
--whitespace=<action>Gestisce errori di whitespace.

Esempi

git am patches/*.patch
# Applica una serie di output di format-patch

git am --3way --signoff incoming.mbox
# Fallback merge a tre vie, aggiunge righe di sign-off

git am --abort
# Cancella dopo un conflitto senza speranza

curl -L https://lore.kernel.org/.../t.mbox.gz | gunzip | git am --3way
# Applica patch scaricate da una lista pubblica

Errori comuni

Dimenticare --3way quando le patch sono state generate contro una base leggermente diversa spesso causa fallimenti che --3way gestirebbe. Dopo aver risolto un conflitto, esegui git am --continue, NON git commit. Un semplice commit crea uno stato malformato.

Comandi correlati

git apply, git format-patch, git send-email, git mailinfo