Aplicando un parche git desde una confirmación previa a una confirmación posterior

Digamos que el tree git aparece como:

1 ----> 2 ----> 3 -----> 4(HEAD/MASTER) \ \ (PATCH) --2A-> 

y tengo un parche que es un diff de 2 y 2A que agrega una característica.

¿Existe alguna forma inteligente de aplicar este parche a la última confirmación? Suponiendo que todo lo que tengo es el file de parche y el git repo de la línea principal.

Pruebe la manera simple primero. Si ya estás en maestro,

 git apply PATCH 

Si el parche no se aplica a HEAD / master, intente esto:

 git checkout 2 git apply PATCH git tag patch-applied git checkout master git cherry-pick patch-applied 

O

 git checkout 2 git apply PATCH git tag patch-applied git checkout master git merge patch-applied 

Tanto para la fusión como para la rebase, puede suceder que necesite resolver conflictos. rebase te da un historial lineal, merge te da un historial ramificado.

Puedes usar git lola para echar un vistazo al historial que creaste.

Como señala TheCodeArtist , si tiene un file de parche, puede aplicarlo simplemente usando git apply <patch> :

 git checkout master git apply <patch> 

De acuerdo con la documentation oficial de Linux Kernel Git para git apply :

NOMBRE

git-apply – Aplicar un parche a los files y / o al índice

DESCRIPCIÓN

Lee la salida de diff suministrada (es decir, "un parche") y la aplica a los files.

Este command aplica el parche pero no crea un commit. Use git-am (1) para crear commits a partir de parches generados por git-format-patch (1) y / o recibidos por correo electrónico.