2012-09-02 11 views
85

Tanto git am y git apply se puede utilizar para aplicar los parches. No logro ver la diferencia. Veo una diferencia ahora: git am confirma automáticamente, mientras que git apply solo toca los archivos pero no crea un compromiso. ¿Es esa la única diferencia?¿Cuál es la diferencia entre git am y git?

+7

'am' podría ser pensado como una abreviatura de' Aplicar Mail' ... –

Respuesta

74

Tanto la entrada y 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 se utiliza --index o --cached).
  • git am tiene un buzón de confirmaciones con formato de mensajes de correo electrónico (por ejemplo, la salida de git format-patch) y las aplica a la rama actual.

git am uses git apply behind the scenes, pero hace más trabajo antes (leer unas Maildir o mbox, y el análisis mensajes de correo electrónico) y después (creación de confirmaciones).

+5

Nota: 'apply' git también parece aceptar 'git-salida de formato patch'. –

+3

'git apply' funcionaría para la salida de' git-formato patch' también, pero los cambios sería unstaged y tendría que estar comprometidos (creando así un diferente punto de comprometerse en el índice que se aplican a). Con 'git am' llevaría la información de confirmación (junto con el autor, etc.) al índice al que se aplica. 'git apply' a continuación es para parchear el repo (malo),' git am' puede tener cambios en las características de fiar e incluirlo en su repo (método preferido). –

6

Con git am 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, por lo tanto git status y git diff de salida de la voluntad de los cambios realizados en el parche que ha solicitado, entonces se puede corregir/añadir más cambios y enviarlos juntos como un nuevo parche.

9

git apply es para aplicar diffs rectas (por ejemplo, de git diff), mientras que git am es para la aplicación de parches y las secuencias de los parches de los correos electrónicos, ya sea mbox o formato Maildir y es el "opuesto" de git format-patch. git am intenta extraer los mensajes de confirmación y los detalles de autor de los mensajes de correo electrónico, por lo que puede realizar confirmaciones.

Cuestiones relacionadas