2010-02-16 13 views
9

tengo este (repositorio git):(git): ¿Cómo llevar la confirmación específica de la rama ascendente?

A--B--C--D ->master 
    \--E ->dev 

Y quiero traer solamente cometer D para ramificar dev (D no depende de C), por lo que:

A--B--C--D ->master 
    \--E--D' ->dev 

Pero D 'no debe agregarán al maestro después de una fusión:

A--B--C--D--E' ->master 
    \--E--D'/ ->dev 

Esto es porque quiero provocar lice una actualización de archivos sin tener que contaminar dev con nuevos archivos que C (que representa otro, gran fusión) agrega.
Supongo que necesito usar git rebase, pero no puedo adivinar cómo.

Respuesta

10

Desea utilizar git cherry-pick de trabajo. Asumiré que su control remoto se llama "origen" (pero sustituya el nombre real del repositorio remoto por "origen"). Asumiré que tienes dos sucursales locales también llamadas master y dev. Asumiré que el compromiso D está en origin/dev. Puede cherry-pick D con lo siguiente:

$ git fetch origin    # Assuming the upstream remote's name is "origin" 
$ git checkout dev    # Check out your local "dev" branch 
$ git cherry-pick $COMMIT_D # Replace "COMMIT_D" with the hash for commit D 

Ahora sólo tendrá los cambios de cometer D en dev.

Cuestiones relacionadas