2011-12-08 23 views
19

por lo general se crea nueva rama de desarrollarGit: creó una nueva rama de la rama equivocada

git checkout -b new-feature develop 

continuación, después de la última confirmación puedo combinar de nuevo a desarrollar

git checkout develop 
git merge new-feature 

pero esta vez creado new-feature2 Brach desde new-feature y ahora no puedo unirme al develop.

¿Hay alguna manera de cambiar el padre de new-feature2 al develop?

(Los archivos en los que trabajé fueron la misma versión que en develop por lo que este debe no requieren la fusión.)

Respuesta

4

¿qué pasa con la creación de un parche, la caja de la rama develop y aplicar el parche?

git checkout new-feature2 

git format-patch new-feature 

git checkout develop 

git am name-of-the-patch.patch 
+0

Suena bien, ¿cuáles serían los comandos? – hakunin

+0

Fantástico, no sabía que los parches de git fueran tan fáciles, ¡gracias! – hakunin

1

También es posible usar git diff y git apply:

git diff new-feature..new-feature2 | git apply - 
+0

¡Gracias por incluir una solución alternativa! – hakunin

26

Se podría rebasar su función a la base principal:

git checkout new-feature2 
git rebase --onto develop new-feature new-feature2 
# rebase the stuff from new-feature to new-feature2 onto develop branch 

o hacerlo 'manualmente' mediante el uso de selección de cereza

git checkout develop 
git log --oneline new-feature..new-feature2 
# for every commit call: 
git cherry-pick <commit-id> # note, newer versions of cherry-pick allow multiple commits at once 
+0

Ya resolví el problema con los parches, pero esto suena más a lo que estaba buscando. Gracias por incluir los comandos, esto ayudará a los lectores. (PD: Tenga en cuenta que la rama a la que quería volver a establecer la base era 'develop'. El ejemplo dice' maser'.) – hakunin

+0

He cambiado el ejemplo, gracias por señalar que hakunin. – reto

+0

salvavidas .... (bueno, de todos modos me salvó un poco de tiempo !!!) –

3

¿Has visto rebase interactivo?

git rebase -i develop 

es una solución bastante simple: mostrará todas sus confirmaciones de esa rama. Simplemente elimine las líneas de "selección" de la rama no deseada.

+0

¡Suena genial, gracias por agregar esto! – hakunin