Ambos git am
y git apply
se pueden usar para aplicar parches. No logro ver la diferencia. Ahora veo una diferencia: git am
confirma automáticamente mientras que git apply
solo toca los archivos pero no crea una confirmación. ¿Es esa la única diferencia?
134
am
podría considerarse como una abreviatura deApply Mail
...Respuestas:
Tanto la entrada como la salida son diferentes:
git apply
lleva un parche (por ejemplo, la salida degit 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 degit format-patch
) y las aplica a la rama actual.git am
usagit apply
detrás de escena , pero hace más trabajo antes (leer unMaildir
ombox
, y analizar mensajes de correo electrónico) y después (crear confirmaciones).fuente
git apply
parece aceptar también lagit format-patch
salida.git apply
también funcionaría para la salida degit 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). Congit 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, desdegit diff
) mientras quegit am
es para aplicar parches y secuencias de parches de correos electrónicos, ya sea en formato mbox o Maildir, y es el "opuesto" degit 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.fuente
Cuando
git am
aplique el parche, si lo usagit 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 consecuenciagit status
ygit 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 .fuente