Fusionando files seleccionados de twigs similares después de uno fue re-basado

Mientras trabajaba en la feature1 , en el punto de confirmación A continuación, se me pidió que construyera otra modificación en ella. Vamos a llamarlo feature1+ . Esto significa que el gráfico se ve así:

 master: o---o---o---o---o \ feature1: o---e---e---e---O---A \ feature1+: o---c---c---X 

Ahora quiero fusionar feature1+ nuevo en feature1 , pero me doy count de que los cambios entre los files existentes en X y A son mínimos; hay dos nuevos files rastreados en los c commits.

En el path, comencé a consolidar los commits en feature1 , feature1 basar los e commits en uno solo para networkingucir el número de commits en master al final. Creo que el gráfico efectivo es este:

 master: o---o---o---o---o \ feature1: o---o'---O---A \ feature1+: o---e---e---e---O---A---c---c---X 

Sin embargo, esto significa feature1+ dumps the e commits en feature1 también cuando ejecuto:

 git checkout feature1 git merge feature1+ 

Lo que me da:

 master: o---o---o---o---o \ feature1: o---o'---O---A---e---e---e---O---c---c---X 

Quiero agregar c commits sin reintroducir los e . En otras palabras, fusionarlo de nuevo en esto:

 master: o---o---o---o---o \ feature1: o---o'---O---A---c---c---X 

¿Cómo puedo hacerlo? Intenté simplemente consultar los nuevos files desde c cuando estaba en la característica 1 en A, pero por supuesto esto da los files sin retener su historial.

Mientras está en la sucursal: feature1 desprotegido en A:

haciendo git cherry-pick feature1+: A .. X debería dar como resultado el tree deseado

 master: o---o---o---o---o \ feature1: o---o'---O---A---c---c---X 

La respuesta más breve, sugerida por @nevyn en el canal #git en Freenode IRC, fue cherry-pick cuidadosamente los commits deseados en feature1 (los documentos sugirieron esto pero probablemente tenía miedo de intentarlo):

 git checkout feature1 git cherry-pick c # the first c git cherry-pick c # OK, the second one, I didn't think ahead THAT far. git branch -d feature1+ # warns + gives the correct command for an unmerged branch