Sinossi
git apply [--check] [--index] [--3way] <patch>...
Descrizione
Il comando git apply applica un diff unificato (un file di patch) alla working tree, all'index o ad entrambi. A differenza di git am, che si aspetta una patch in formato mailbox completo con metadati di autore e messaggio, git apply applica solo il contenuto del diff. È utile per applicare patch ricevute via email, strumenti di code review o generate da git diff.
Per default, git apply aggiorna solo la working tree. Usa --index per aggiornare anche la staging area, e --3way per ricadere su un merge a tre vie quando la patch non si applica pulitamente. Per verificare una patch senza applicarla, usa --check.
Nell'uso quotidiano, git apply si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
--check | Testa se la patch si applica senza modificare nulla. |
--index | Applica a working tree e index. |
--cached | Applica solo all'index. |
--3way | Merge a tre vie se il contesto non corrisponde. |
--reverse / -R | Applica al contrario (decommitta una patch). |
--whitespace=<action> | Gestisce errori di whitespace (warn, fix, error). |
-p<n> | Strip n componenti del path dai nomi file. |
Esempi
git apply changes.patch
# Applica un file di patch alla working tree
git apply --check feature.patch
# Verifica che una patch si applichi pulitamente
git apply --index --3way mr.diff
# Applica con fallback merge a tre vie, anche all'index
curl -L https://example.com/fix.patch | git apply
# Pipe una patch direttamente da un URL
Errori comuni
Se la patch è stata generata contro una base diversa, un semplice git apply fallisce con "patch does not apply." Aggiungere --3way spesso salva la giornata tentando un merge. Per patch che includono metadati di commit (autore, messaggio), usa invece git am così il commit viene ricreato fedelmente.
Comandi correlati
git am, git format-patch, git diff, git cherry-pick