Da Anonimo (non verificato) , 29 Aprile 2026

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

OpzioneDescrizione
--checkTesta se la patch si applica senza modificare nulla.
--indexApplica a working tree e index.
--cachedApplica solo all'index.
--3wayMerge a tre vie se il contesto non corrisponde.
--reverse / -RApplica 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