Respuestas:
Tanto la entrada como la salida son diferentes:
git apply
lleva un parche (por ejemplo, la salida de git diff
) y lo aplica al directorio de trabajo (o índice, si --index
o --cached
se utiliza).git am
toma un buzón de confirmaciones formateadas como mensajes de correo electrónico (por ejemplo, la salida de git format-patch
) y las aplica a la rama actual.git am
usa git apply
detrás de escena , pero hace más trabajo antes (leer un Maildir
o mbox
, y analizar mensajes de correo electrónico) y después (crear confirmaciones).
git apply
parece aceptar también la git format-patch
salida.
git apply
también funcionaría para la salida de git format-patch
, pero los cambios no se realizarían por etapas y tendrían que confirmarse (creando así un punto de confirmación diferente en el índice al que se aplican). Con git am
usted llevaría la información de confirmación (junto con el autor, etc.) al índice al que se aplica. git apply
luego es para parchar su repositorio (malo), git am
puede tomar cambios legítimos de características e incluirlo en su repositorio (enfoque preferido).
git apply
es para aplicar diferencias directas (por ejemplo, desde git diff
) mientras que git am
es para aplicar parches y secuencias de parches de correos electrónicos, ya sea en formato mbox o Maildir, y es el "opuesto" de git format-patch
. git am
intenta extraer mensajes de confirmación y detalles del autor de los mensajes de correo electrónico, por lo que puede realizar confirmaciones.
Cuando git am
aplique el parche, si lo usa git status
, no verá ningún cambio local.
git apply
le permite realizar los cambios en los archivos de origen como si estuviera escribiendo el código usted mismo, en consecuencia git status
y git diff
generará los cambios realizados en el parche que ha aplicado, luego puede corregir / agregar más cambios y enviarlos juntos como un nuevo parche .
am
podría considerarse como una abreviatura deApply Mail
...