2009-11-20 17 views

Respuesta

27

Cherry-pick se compromete con la rama de destino y restablece la rama de origen. Suponiendo, que desea mover la última confirmación desde source rama en target, hacer:

git checkout target 
git cherry-pick source 
git checkout source 
git reset --hard source^ 

Si el envío no fue la última, que tendrá que utilizar git rebase -i en lugar de la última orden y selecciona específica de comprometerse nombre para su cherry-pick.

+0

Gracias! Funciona genial. – prismofeverything

+6

Tenga en cuenta que reset/rebase ambos hacen ** reescritura de la historia **, por lo que no deberían usarse si se publicó el historial, entonces tendría que usar git-revert en su lugar. –

2

En general, cuando hago algo como esto, yo:

  1. Crear un archivo de revisión inversa usando git diff (por ejemplo git diff HEAD^ HEAD)
  2. Aplicar este parche inversa a la rama Quiero eliminar el cambio de.
  3. Mira la rama sí quiero el cambio en
  4. Uso git cherry-pick aplicar el aplicable cometer

Creo que hay una manera más fácil, pero yo prefiero esto ya que uso (y recordar) el diff/cherry-pick comandos mejor

+3

Pasos 1 + 2 == git revertir – Dustin

Cuestiones relacionadas