2012-05-22 7 views
9

Estoy usando git-flow para mis proyectos, y he comenzado un conjunto bastante complicado de cambios en la rama de desarrollo, que parecen tardar más de lo que esperaba.¿Las modificaciones de movimiento realizadas en la rama de desarrollo se convierten en una nueva rama de características de flujo de git?

Ojalá hubiera hecho esto en una rama de características, ya que me gustaría hacer una nueva versión con otros cambios. ¿Cómo puedo mover estos cambios no confirmados en una nueva rama de características de flujo de git?

Respuesta

17

Si ha realizado ningún compromete

Si sólo tiene una copia de trabajo sucio, simplemente actúa como si estuviera a punto de comenzar una nueva característica:

git flow feature start awesomeness 
git commit -va 

Si hizo make some commits

Si hay commits en el desarrollo que deberían haber estado en su rama de características, el st anterior eps son lo mismo. Además, aunque usted (posiblemente - esto no es obligatorio) que desee restablecer la rama de desarrollo de vuelta a donde estaba antes de empezar a confirmar los cambios para su rama de la característica, que se puede hacer con:

git flow feature start awesomeness 
git commit -va 
git checkout develop 
git reset origin/develop --hard 
+0

No sabía que la función podría iniciarse después de los cambios no confirmados. ¡Gracias! – plang

2

Aquí hay una manera de hacerlo:

git checkout where-you-should-have-made-your-feature-branch 
git branch feature-branch 
git checkout feature-branch 
foreach commit in commits-that-should-have-been-on-your-feature-branch: 
    # do this for each commit in chronological order 
    git cherry-pick commit 

Ahora depende de si ha empujado ya su rama de desarrollo de un repositorio público o no. Si todo sigue siendo privada, y quiere reescribir la historia:

git checkout develop-branch 
foreach commit in commits-that-should-have-been-on-your-feature-branch: 
    # do this for each commit in reverse chronological order 
    git rebase --onto commit~1 commit develop-branch 

Si no desea volver a escribir la historia:

git checkout develop-branch 
foreach commit in commits-that-should-have-been-on-your-feature-branch: 
    # do this for each commit in reverse chronological order 
    git revert commit 

Y eso debería hacerlo.

+0

git rebase en un bucle parece un poco innecesario/torpe - ¿cuál es la idea allí? – AD7six

+0

Hola, gracias por tu respuesta, pero aún no se ha cometido nada. La solución fue más fácil que eso. – plang

Cuestiones relacionadas