2012-06-01 13 views
6

En Git, a veces trabajo en sucursales de larga duración. Me gusta volver a trabajar en el maestro de vez en cuando para facilitar la fusión cuando estoy listo.¿Puedo destruir y volver a crear una rama remota de Git en un comando?

Después de rebasar, no puedo presionar una rama previamente empujada a un control remoto, porque el historial de mi rama ya no concuerda con el historial del control remoto de esa rama. Entonces tengo que eliminarlo primero.

Ésta es mi flujo de trabajo actual:

git checkout my_branch 
git rebase master 
git push origin :my_branch # Delete remote version of the branch 
git push origin my_branch # Push up my new version of history on this branch 

¿Hay un solo comando, atómico que podría sustituir a los dos últimos comandos?

+0

No sabía que no puedes empujar una rama rebasada. ¿Alguien sabe por qué? Rebase parece ser una operación bastante común, ¿por qué no "solo funciona"? – Shahbaz

+2

Citando http://help.github.com/rebase _ "Se considera una mala práctica volver a establecer los commit que ya has enviado a un repositorio remoto. Hacerlo puede invocar la ira de los dioses git ... has sido advertido . "_ – Stefan

+0

@Stefan, bueno, bueno viejo git-merge es para mí entonces. – Shahbaz

Respuesta

10

Si se le permite reescribir la rama remota, puede usar git push --force my_remote my_branch.

+2

Esto resolverá la pregunta como se le preguntó, pero Stefan está en el camino correcto. Reasignar confirma que ya has presionado a un control remoto generalmente no es una buena práctica. – Emily

+0

Bueno, si usted es el único que trabaja en esa rama, probablemente esté bien. – Stefan

+0

@Stefan: ese es exactamente mi caso; es mi rama exclusiva. No lo haría de otra manera. –

Cuestiones relacionadas