¿Mover las modificaciones realizadas en la rama de desarrollo a una nueva rama de características de git-flow?

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 al principio.

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 a una nueva rama de funciones de git-flow?

preguntado el 22 de mayo de 12 a las 16:05

2 Respuestas

Si no ha realizado compromisos

Si simplemente tiene una copia de trabajo sucia, simplemente actúe como si estuviera a punto de comenzar una nueva función:

git flow feature start awesomeness
git commit -va

Si sí logró hacer algunos compromisos

Si hay confirmaciones en desarrollo que deberían haber estado en su rama de características, los pasos anteriores son los mismos. Además, querrá (posiblemente, esto no es obligatorio) restablecer su rama de desarrollo a donde estaba antes de comenzar a confirmar los cambios para su rama de características, lo que puede hacer con:

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

respondido 11 nov., 13:16

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

He aquí una forma 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 ya envió su rama de desarrollo a un repositorio público o no. Si todo sigue siendo privado y desea reescribir el historial:

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 quieres 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 revert commit

Y eso debería bastar.

contestado el 22 de mayo de 12 a las 16:05

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

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

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.