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
| Opzione | Descrizione |
|---|---|
--3way | Ricade su merge a tre vie se la patch non si applica pulitamente. |
--abort | Cancella un am in corso. |
--continue / --resolved | Continua dopo aver corretto i conflitti. |
--skip | Salta la patch corrente. |
-s, --signoff | Aggiunge trailer Signed-off-by. |
-k | Passa -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