Risposte:
Sia l'input che l'output sono diversi:
git apply
prende una patch (es. l'output di git diff
) e la applica alla directory di lavoro (o all'indice, se --index
o --cached
è usato).git am
accetta una cassetta postale di commit formattata come un messaggio di posta elettronica (ad esempio l'output di git format-patch
) e li applica al ramo corrente.git am
utilizza git apply
dietro le quinte , ma fa più lavoro prima (leggendo un Maildir
o mbox
e analizzando i messaggi e-mail) e dopo (creando commit).
git apply
sembra accettare anche l' git format-patch
output.
git apply
funzionerebbe anche per l'output git format-patch
, ma le modifiche non sarebbero state messe in scena e avrebbero dovuto essere impegnate (creando così un diverso punto di commit nell'indice a cui sono applicati). Con git am
te porteresti le informazioni di commit (insieme all'autore, ecc.) Nell'indice a cui sono applicate. git apply
quindi è per patchare il tuo repository (non valido), git am
può apportare modifiche alle funzionalità legittime e includerlo nel repository (approccio preferito).
git apply
serve per applicare differenze dirette (ad es. da git diff
) mentre git am
per applicare patch e sequenze di patch da e-mail, in formato mbox o Maildir ed è "l'opposto" di git format-patch
. git am
tenta di estrarre i messaggi di commit e i dettagli dell'autore dai messaggi di posta elettronica, motivo per cui può effettuare commit.
Con git am
l'applicazione si applica la patch, quindi se si utilizza git status
non si vedrà alcuna modifica locale.
git apply
ti consente di apportare le modifiche ai file sorgente come se stessi scrivendo il codice da solo, di conseguenza git status
e git diff
produrrà le modifiche apportate nella patch che hai applicato, quindi puoi correggere / aggiungere più modifiche e inviarle insieme come una nuova patch .
am
potrebbe essere pensato come un'abbreviazione diApply Mail
...