¿Cómo puedo generar un parche de Git para una confirmación específica?
Quiero crear un parche para un hash de confirmación específico <rev>
.
Intenté usar git format-patch <rev>
, pero eso generó un parche para cada confirmación desde la <rev>
confirmación. ¿Hay alguna manera de generar un parche solo para <rev>
?
Intentar:
git format-patch -<n> <rev>
Por ejemplo:
git format-patch -1 HEAD
La -1
bandera indica cuántas confirmaciones deben incluirse en el parche:
-<n>
Prepare parches a partir de las <n> confirmaciones superiores.
Aplique el parche con el comando:
git am < file.patch
Alternativamente, también puedes aplicar (debería funcionar en todos los sistemas operativos, incluido Windows) con:
git apply --verbose file.patch
El -v
o --verbose
mostrará qué falló, si corresponde. Dándote una pista sobre cómo solucionarlo.
Para generar los parches a partir de las <n> confirmaciones superiores de un hash SHA-1 específico:
git format-patch -<n> <SHA-1> --stdout > <name_of_patch_file>.patch
Los últimos 10 parches de head en archivos de un solo parche:
git format-patch -10 HEAD --stdout > 0001-last-10-commits.patch
Supongamos que tiene el ID de confirmación 2 después de la confirmación 1 y podrá ejecutar:
git diff 2 1 > mypatch.diff
donde 2 y 1 son hashes SHA-1.
Este comando (como ya lo sugirió @Naftuli Tzvi Kay ),
git format-patch -1 HEAD
Reemplace HEAD
con un hash o rango específico.
generará el archivo de parche para la última confirmación formateado para parecerse al formato de buzón de Unix.
-<n>
- Prepare parches a partir de las <n> confirmaciones superiores.
Luego puede volver a aplicar el archivo de parche en formato de buzón de la siguiente manera:
git am -3k 001*.patch
Ver: man git-format-patch
.