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 generar unos cientos de parches, tuve que matar el proceso.
¿Hay alguna manera de generar un parche solo para el SHA1 específico?

git apply --stat file.patch# mostrar estadísticas.git apply --check file.patch# verifique el error antes de aplicar.git am < file.patch# aplicar el parche finalmente.git am --keep-cr < mypatch.patchgit am -3 < file.patchpara aplicar usando una combinación de tres vías que le permitirá resolver conflictos usandogit mergetooldespués (o editando manualmente) que se encuentran aquí .git format-patch -1 <sha> path/to/file.jsEsto creará un parche que solo contenga los diffs para el archivo .jsPara generar los parches desde los commits superiores desde un hash sha1 específico:
Los últimos 10 parches de la cabeza en un solo archivo de parche:
fuente
git format-patch -1 HEADgenerará parche para la confirmación más reciente-2genera parches para los 2 commits más recientes es, y una cosa más para aclarar es que el comandogot format-patch -2 HEADes el mismo que la líneagit format-patch HEAD~2Digamos que tiene commit id 2 después de commit 1 que podría ejecutar:
donde 2 y 1 son hash SHA.
fuente
git diff hash^ hash. el "hash ^" da el commit precedido. (pero, por supuesto, la respuesta de manojlds es mejor)git show HEAD > mypatch.diffmientras estás en el commit debería hacer lo mismo.git diff 1 2Este comando (como ya sugirió @ Naftuli Tzvi Kay ):
Reemplace
HEADcon hash o rango específico.generará el archivo de parche para la última confirmación formateada para parecerse al formato de buzón UNIX.
Luego, puede volver a aplicar el archivo de parche en un formato de buzón:
Ver:
man git-format-patch.fuente
gitparche con formato, al menos si el usuario lo aplica de la manera correcta.-kbandera (git am -3) me arregló este formulario (sinPATCH[0/10]mensajes de confirmación). Git versión 2.20.1.windows.1Solución rápida y simple.
fuente
git apply --check patch-file-nameantes de aplicar un parche. Esto ayudará a evitar problemas.Si desea asegurarse de que el parche (confirmación única) se aplicará sobre una confirmación específica, puede usar la nueva opción git 2.9 (junio de 2016)
git format-patch --baseVer commit bb52995 , commit 3de6651 , commit fa2ab86 , commit ded2c09 (26 de abril de 2016) por Xiaolong Ye (``) .
(Fusionada por Junio C Hamano -
gitster- en commit 72ce3ff , 23 de mayo de 2016)Git 2.23 (Q3 2019) mejorará eso, porque la "
--base" opción de "format-patch" calculó lospatch-idsparches de requisitos previos de una manera inestable, que se ha actualizado para calcular de una manera que sea compatible con "git patch-id --stable".Ver commit a8f6855 , commit 6f93d26 (26 abr 2019) por Stephen Boyd (
akshayka) .(Fusionada por Junio C Hamano -
gitster- en commit 8202d12 , 13 jun 2019)Antes de Git 2.24 (Q4 2019), "
git format-patch -o <outdir>" hizo un equivalente de "mkdir <outdir>" no "mkdir -p <outdir>", que se está corrigiendo.Ver commit edefc31 (11 oct 2019) por Bert Wesarg (
bertwesarg) .(Fusionada por Junio C Hamano -
gitster- en commit f1afbb0 , 18 oct 2019)Con Git 2.25 (Q1 2020), "
git rebase" no funcionó bien cuando seformat.useAutoBaseconfiguró la variable de configuración, que se ha corregido.Ver commit cae0bc0 , commit 945dc55 , commit 700e006 , commit a749d01 , commit 0c47e06 (04 dic 2019) por Denton Liu (
Denton-L) .(Fusionada por Junio C Hamano -
gitster- en commit 71a7de7 , 16 dic 2019)fuente
Para generar la ruta desde una confirmación específica (no la última confirmación):
fuente
si solo desea diff el archivo especificado, puede:
fuente
Con mi fondo mercurial iba a usar:
Pero estoy considerando usar
git format-patch -1 $IDahora.fuente
¿Cuál es la forma de generar un parche solo para el SHA1 específico?
Es bastante simple:
Opción 1.
git show commitID > myFile.patchOpcion 2.
git commitID~1..commitID > myFile.patchNota: Reemplace
commitIDcon la identificación de confirmación real (código de confirmación SHA1).fuente