tag from crear git patch

from - Generar un parche git para un commit específico



git patch from commit (9)

¿Cuál es la manera de generar un parche solo para el SHA1 específico?

Es bastante simple:

Opción 1. git show commitID > myFile.patch

Opción 2. git commitID~1..commitID > myFile.patch

Nota: Reemplace commitID con el ID de confirmación real (código de confirmación SHA1).

Necesito escribir un script que cree parches para una lista de números de confirmación SHA1.

Intenté usar git format-patch <the SHA1> , pero eso generó un parche para cada confirmación desde ese SHA1. Después de que se generaron unos pocos cientos de parches, tuve que matar el proceso.

¿Hay una manera de generar un parche solo para el SHA1 específico?


Digamos que tienes la ID de confirmación 2 después de la confirmación 1 que podrías ejecutar:

git diff 2 1 > mypatch.diff

donde 2 y 1 son hashes SHA.


Este comando (como ya sugirió @ Naftuli Tzvi Kay ):

git format-patch -1 HEAD

Reemplace HEAD con hash o rango específico.

generará el archivo de parche para el último compromiso formateado para parecerse al formato de buzón de UNIX.

-<n> - Prepara parches desde los más altos mensajes.

Luego, puede volver a aplicar el archivo de parche en un formato de buzón:

git am -3k 001*.patch

Ver: man git-format-patch .


Para generar los parches a partir de las confirmaciones superiores de un hash sha1 específico:

git format-patch -<n> <SHA1>

Los últimos 10 parches desde la cabeza en un solo archivo de parche:

git format-patch -10 HEAD --stdout > 0001-last-10-commits.patch


Para generar una ruta desde una confirmación específica (no la última confirmación):

git format-patch -M -C COMMIT_VALUE~1..COMMIT_VALUE


Si desea estar seguro de que el parche (confirmación única) se aplicará sobre una confirmación específica, puede usar la nueva opción git format-patch --base 2.9 (junio de 2016) git format-patch --base

git format-patch --base=COMMIT_VALUE~ -M -C COMMIT_VALUE~..COMMIT_VALUE # or git format-patch --base=auto -M -C COMMIT_VALUE~..COMMIT_VALUE # or git config format.useAutoBase true git format-patch -M -C COMMIT_VALUE~..COMMIT_VALUE

Consulte commit bb52995 , commit 3de6651 , commit fa2ab86 , commit ded2c09 (26 de abril de 2016) de Xiaolong Ye (``) .
(Fusionada por Junio ​​C Hamano - gitster - in commit 72ce3ff , 23 de mayo de 2016)

format-patch : agrega la opción '' --base '' para registrar información del árbol base

Los encargados de mantenimiento o los evaluadores externos pueden querer saber el árbol base exacto al que se aplica la serie de parches. Enseñe a git format-patch una opción '' --base '' para registrar la información del árbol base y adjuntarla al final del primer mensaje (ya sea la carta de presentación o el primer parche de la serie).

La información del árbol base consiste en el "compromiso base", que es un compromiso conocido que forma parte de la parte estable del historial del proyecto en el que todos los demás trabajan, y cero o más "parches de requisitos previos", que son conocidos los parches en vuelo que aún no forman parte del "compromiso de base" que deben aplicarse encima del "compromiso de base" en orden topológico antes de que se puedan aplicar los parches.

La "confirmación de base" se muestra como " base-commit: " seguida por el 40-hex del nombre del objeto de confirmación.
Un "parche prerrequisito" se muestra como " prerequisite-patch-id: " seguido por el 40-hex "parche id", que puede obtenerse pasando el parche a través del comando " git patch-id --stable ".


Si solo desea diferenciar el archivo especificado, puede:

git diff master 766eceb - conexiones /> 000-mysql-connector.patch


Tratar:

git format-patch -1 <sha>

o

git format-patch -1 HEAD

Aplique el parche con el comando:

git am < file.patch


git format-patch commit_Id~1..commit_Id git apply patch-file-name

Solución rápida y sencilla.