Ambos git amy git applyse pueden usar para aplicar parches. No logro ver la diferencia. Ahora veo una diferencia: git amconfirma automáticamente mientras que git applysolo toca los archivos pero no crea una confirmación. ¿Es esa la única diferencia?
134

ampodría considerarse como una abreviatura deApply Mail...Respuestas:
Tanto la entrada como la salida son diferentes:
git applylleva un parche (por ejemplo, la salida degit diff) y lo aplica al directorio de trabajo (o índice, si--indexo--cachedse utiliza).git amtoma 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 amusagit applydetrás de escena , pero hace más trabajo antes (leer unMaildirombox, y analizar mensajes de correo electrónico) y después (crear confirmaciones).fuente
git applyparece aceptar también lagit format-patchsalida.git applytambié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 amusted llevaría la información de confirmación (junto con el autor, etc.) al índice al que se aplica.git applyluego es para parchar su repositorio (malo),git ampuede tomar cambios legítimos de características e incluirlo en su repositorio (enfoque preferido).git applyes para aplicar diferencias directas (por ejemplo, desdegit diff) mientras quegit ames 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 amintenta 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 amaplique el parche, si lo usagit status, no verá ningún cambio local.git applyle permite realizar los cambios en los archivos de origen como si estuviera escribiendo el código usted mismo, en consecuenciagit statusygit diffgenerará los cambios realizados en el parche que ha aplicado, luego puede corregir / agregar más cambios y enviarlos juntos como un nuevo parche .fuente