Estoy usando git y quiere cambiar la base de salir de la sucursal. Esto es causado por un sistema de implementación, que tira de este explícito de la rama en mi entorno de producción. Cuando la planificación de mis versiones, puedo crear una etiqueta cada vez que quiero ir a vivir. Pero mi rama especial de cambios, por lo que también git reset --hard v1.0 no funciona.

Aquí un pequeño ejemplo. Quiero que este

      C---D---E deploy
     /
A---B---F---G master
     \
      v1.0

para convertirse en este

                          C---D---E deploy
                         /
A---B---F---G---H---I---J---K master
     \                   \
      v1.0                v1.1

Tal vez git rebase es lo que estoy buscando, pero las páginas man no me ayuda. Gracias por sus respuestas!

OriginalEl autor micha149 | 2011-04-19

4 Comentarios

  1. 11

    git rebase debe, como usted dice, permiten el cambio de la base de implementar:

    git checkout deploy
    git rebase v1.1 # using the tag
    (or:
     git rebase J # SHA1 of J
     or
     git rebase master~1
    )
    

    Pero usted va a terminar con

    C'---D'---E' deploy
    

    Que es, el SHA1 de la cometa parte de deploy rama se vuelven a escribir, que no es demasiado malo si nadie clonado dijo deploy rama y estaba trabajando en ello.

    Ya que es una rama de la implementación, que es más probable que el caso (es decir, nadie estaba trabajando en un clon de dicha rama).

    Pero no es posible utilizar el nombre de la etiqueta?!
    sí, me equivoco es para un nombre de rama!

    OriginalEl autor VonC

  2. 3

    No entiendo por qué usted quiere perder el original de su rama. Lo que yo haría en ese caso:

     # create a new branch from your 1.1 tag
     git checkout -b deploy1.1 v1.1 
     # merge your existing branch into this one
     git merge deploy
    

    EDITAR: añadido esquema

    Usted va a terminar con algo como que

           C---D---E deploy
           /       \_______ 
          /                 F deploy1.1
         /                 /
    A---B---F---G--H--I--J--K--L
         \                   \
        v1.0                 V1.1
    
    No quiero perder, porque hay algunos cambios importantes. Como un completamente añadido Zend Framework Biblioteca, configuración de una conexión de base de datos y otras opciones de configuración, que necesito sólo en el sistema de producción.
    con mi propositin, mantener su original sucursal y tiene una nueva combinado de J, lo que significa que puede modificar su antiguo 1.0-patched rama y trabajar en la nueva (en su dibujo, quitado C – D – E, por lo tanto mi pregunta)
    De hecho, me gusta esta solución mejor, si usted necesita para mantener un seguimiento de cada esfuerzo de desarrollo necesario para cada implementación. (+1), Pero si dijo que el esfuerzo de desarrollo son siempre los mismos, un simple reajuste sería suficiente.
    El nombre de la sucursal en el sistema de producción es fijo. Si puedo volver a crear la sucursal, el sistema de producción parece perdido en el seguimiento. Así, prefiero el reajuste de la variante. Thx

    OriginalEl autor Bruce

  3. 3

    sí, usted puede utilizar reajuste para lograr el efecto deseado. el siguiente comando checkout de la deploy rama y reproducir todos sus commits, que no son accesibles a través de v1.1, en la parte superior de v1.1:

    git rebase v1.1 deploy
    

    (el detallado manera sería: git rebase --onto v1.1 v1.0 deploy)

    pero, ¿por qué reajuste y la alteración de la historia? usted puede simplemente cambiar la línea principal de desarrollo en la implementación de rama:

    git checkout deploy
    git merge v1.1
    

    esto va a dejar a todos sus cometer los hash intacta, su historia se verá así (M ser la combinación de commit):

          C---D---E-----------M deploy
         /                  /
    A---B---F---G---H---I---J---K master
         \                   \
          v1.0                v1.1
    

    ya que los conflictos puedan surgir durante rebase así como durante la mezcla, tendrá una historia de conflictos cuando se utiliza la combinación de un enfoque basado. con reajuste usted no tiene un historial de conflictos que se sucedieron durante reajuste de la operación. usando una combinación de flujo de trabajo basado, usted puede ver sus conflictos en el (combinado) diff de la mezcla se compromete.

    +1 para la historia de la combinación de los conflictos.

    OriginalEl autor knittl

  4. 2

    git rebase debe trabajar para usted:

    git checkout deploy
    git rebase master~1
    

    o

    git rebase v1.1
    

    Echar un vistazo a http://progit.org/book/ch3-6.html – debe ayudar a entender rebase mejor, yo creo

    fijo hasta master~1 para usted

    OriginalEl autor manojlds

Dejar respuesta

Please enter your comment!
Please enter your name here