2012-09-18 8 views
11

(Esta parece que debería ser muy fácil de hacer, sin embargo, ya voy con las manos vacías en las búsquedas hasta ahora.)Git - rebase a una etiqueta en particular

Tengo un cuerpo de código de un ascendente fuente, con varias versiones etiquetadas en varias ramas.

Estoy trabajando en mi rama "desarrollar" que se basó en la etiqueta "v1.0". muchas versiones han aparecido desde entonces, pero mientras que "v2.0" es interesante, quiero volver a establecer la base de mi rama de desarrollo en "v1.5" y continuar trabajando allí (suponiendo que no planeo alimentarlo nuevamente en sentido ascendente). Tal vez más tarde lo vuelva a clasificar de nuevo a "v2.0".

(Para este propósito asumir "v1.x." s son todas las etiquetas en la misma rama. Para crédito adicional podemos asumir "v2.0" es una etiqueta en otra rama.)

pude cree la rama inicial de "desarrollo" basada en la etiqueta "v1.0" con la suficiente facilidad, pero la rebase parece funcionar solo con las ramas. ¿No se puede volver a utilizar una base usando etiquetas? Si no, ¿cuál es la forma correcta de lograr eso (para tener exactamente el mismo efecto que reescribir una etiqueta en particular)?

+0

Puede volver a establecer la base _to_ a tag. Si no puedes hacer eso, incluye el comando que usaste. –

+0

¡Hmm! Estaba haciendo esto con TortoiseGit (que a simple vista no ofrece la opción de volver a basar con etiquetas, ¿o sí?) Y luego lo intenté en git bash y no tuvo ningún efecto ... pero aparentemente tuve un error de sintaxis (Intenté "git rebase develop v1.5" que era incorrecto ... Acabo de utilizar "git rebase v1.5" con develop check out y parece que funcionó). Editar: En realidad, lo hice por una razón, que fue un ejemplo no muy bueno que encontré en otro lugar. – MartyMacGyver

+0

Creo que el pago y la rebase es la forma estándar de hacerlo. –

Respuesta

13

debe utilizar el siguiente comando:

git rebase --onto v1.5 v1.0 develop 

La parte develop del comando debe ser una rama, pero los otros dos pueden ser lo que quieras.

+0

Parece que estropeé la sintaxis originalmente, lo que me llevó a mi pregunta. Y la aparente ausencia de esta funcionalidad en la opción de rebase de tortoisegit me llevó a cuestionar si era posible. Sin embargo, este hilo ha demostrado ser más informativo de lo que esperaba. ¡Gracias! – MartyMacGyver

+0

Seguimiento: He intentado esto yendo y viniendo y volviendo. Esto en realidad resultó ser menos complicado que mi fusión de prueba original de rama a rama usando TortoiseGit (que, debido a que no se podía especificar la etiqueta ancestro, estaba lanzando innecesarios "conflictos" de fusión que podrían haberse resuelto automáticamente con la información añadida igual la línea de comando git sí. Todavía es un software útil, pero aparentemente no maneja las rebases tan exhaustivamente como podría. – MartyMacGyver