2011-11-22 18 views
218

Creé una nueva rama llamada newbranch de la rama master en git. Ahora he hecho algo de trabajo y quiero unir newbranch al master; sin embargo, he realizado algunos cambios adicionales en newbranch y quiero unir newbranch hasta la cuarta de la última confirmación en master.Combinar hasta una confirmación específica

que utilizan cherry-pick pero muestra el mensaje de utilizar las opciones correctas:

git checkout master  
git cherry-pick ^^^^HEAD newbranch 

¿Puedo utilizar git merge a hacerlo en su lugar?

git merge newbranch <commitid> 

Respuesta

378

Claro, estar en master rama todo lo que hay que hacer es:

git merge <commit-id> 

donde commit-id es hash de la última confirmación de newbranch que desea obtener en su rama master.

Puede obtener más información sobre cualquier comando de git haciendo git help <command>. Es ese caso es git help merge. Y los documentos dicen que el último argumento para el comando merge es <commit>..., por lo que puede pasar la referencia a cualquier confirmación o incluso varias confirmaciones. Sin embargo, yo nunca hice esto último.

+12

no solo una confirmación sino todas las confirmaciones anteriores a 'commit-id' – Dau

+31

Sí, fusionará todas las confirmaciones de' newbranch' desde el momento en que su historia divergió de 'master' hasta' commit-id' en 'rama maestra' Puedes pensar en 'git merge ' como para fusionar alguna rama sin nombre que termine con 'commit-id' en tu rama actual. –

+0

¿Puedo combinar dos ramas locales distintas de la maestra, utilizando la identificación de confirmación? – skt

2

Para mantener limpia la ramificación, usted puede hacer esto:

git checkout newbranch 
git branch newbranch2 
git reset --hard <commit Id> # the commit at which you want to merge 
git checkout master 
git merge newbranch 
git checkout newbranch2 

De esta manera, newbranch terminará en el que se fusionó con maestría, y de continuar trabajando con newbranch2.

Cuestiones relacionadas