2011-10-21 24 views
16

Hice una serie de confirmaciones después de una buena confirmación en la rama maestra, que en retrospectiva debería haber hecho en otra rama. ¿Puedo mover esos commits, comenzando con un commit específico, a otro branch, y mantener el buen commit como el último commit en master?Git: mover confirmaciones de maestro a otra rama

+0

Posible duplicado de [Mueve los commit (s) más recientes a una nueva rama con Git] (http://stackoverflow.com/questions/1628563/move-the-most-recent-commits-to-a -new-branch-with-git) –

Respuesta

25

Claro:

$ git branch new-branch-name      # Create a new branch from the current commit 
$ git reset --hard <last good commit on master> # Reset master to the good commit 
+0

Eso fue fácil. ¡Gracias! –

+0

Entonces, si quiero eliminar las dos últimas confirmaciones de maestro a otra rama. Pagué la última confirmación de maestro, hago una bifurcación desde allí y luego reinicio el HEAD ~ 2 principal. Esto tampoco eliminará los commits de la rama? ¿Significa esto que las confirmaciones no se eliminan, solo que el puntero del maestro apunta ahora dos confirmaciones? ¿Eso es restablecer solo mueve el puntero de la rama un número de confirmaciones antes? – croraf

+0

@croraf: la rama aún apuntará a las dos confirmaciones anteriores que estaban en el maestro. – mipadi

1

Sí, se puede, y eso sería 2 operaciones separadas:

Copiar las confirmaciones de una rama a la rama que queremos que sean:

git cherry-pick <hash_of_commit> --onto <target_branch> 

Luego arregle maestro rama volviendo a una buena confirmación:

git checkout master 
git reset --hard <hash_of_good_commit> 
Cuestiones relacionadas