¿Cuál es la diferencia entre git am y git apply?
Tanto git am
como git apply
se pueden usar para aplicar parches. No veo 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?
3 answers
Tanto la entrada como la salida son diferentes:
-
git apply
toma un parche (por ejemplo, la salida degit diff
) y lo aplica al directorio de trabajo (o índice, si se usa--index
o--cached
). -
git am
toma un buzón de confirmaciones formateadas como mensajes de correo electrónico (por ejemplo, la salida degit format-patch
) y los aplica a la rama actual.
git am
usa git apply
detrás de las escenas , pero hace más trabajo antes (leyendo un Maildir
o mbox
, y analizar los mensajes de correo electrónico) y después (crear confirmaciones).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-26 14:14:50
git apply
es para aplicar diffs rectos (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 los mensajes de confirmación y los detalles del autor de los mensajes de correo electrónico, por lo que puede realizar confirmaciones.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-02 22:21:01
Con git am
se aplica el parche por lo que si utiliza git status
no verá ningún cambio local.
git apply
le permite hacer los cambios en los archivos de origen como si estuviera escribiendo el código por sí mismo, en consecuencia git status
y git diff
generarán los cambios realizados en el parche que ha aplicado, luego puede corregir/agregar más cambios y enviarlos juntos como un nuevo parche.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-26 16:26:25