SourceTree: actualizando develop y master cuando ambos están muy por detrás de la twig activa

Me encuentro en medio de un proyecto que ha intentado utilizar el enfoque de git-flow para mantener el código.

  • https://blog.sourcetreeapp.com/2012/08/01/smart-branching-with-sourcetree-and-git-flow/
  • http://nvie.com/posts/a-successful-git-branching-model/

Debido a que las estrategias de git-flow no se siguieron de cerca al inicio del proyecto, la twig de develop está meses atrás de la última twig de feature , y la twig master está aún más atrás de la twig de develop . Las twigs de características se usaban como twigs para la implementación del código.

La pregunta ahora es: utilizando SourceTree, ¿cuál es la mejor manera de actualizar las twigs de develop y master , de modo que sean básicamente las mismas que la última twig de feature que se usó para la implementación? No veo nada en el develop ni en el master sea ​​útil, ya que están desactualizados y se han producido muchos cambios, por lo que parece que ambos deben estar completamente sobreescritos.

Como no necesita los cambios de master o develop , la solución más fácil sería hacer un restablecimiento completo en esas twigs.

  1. Cambie al master haciendo doble clic en el panel izquierdo.
  2. Encuentre la última confirmación que se implementó en producción en la vista Log / History.
  3. Haga clic con el button derecho en esa confirmación y click Reset current branch to this commit .
  4. En el cuadro de dialog de confirmación, cambie el menu desplegable Using mode a Hard - discard all working copy changes , luego click Aceptar.

Y repite el process para develop .


La alternativa sería eliminar las twigs y volver a crearlas.

  1. Haga clic derecho en la twig master en el panel izquierdo.
  2. Haga clic en Delete master .
  3. En el dialog de confirmación, si la sucursal tiene cambios no fusionados, marque la casilla Force delete , luego click Aceptar.

Repita el process para develop .

A continuación, tome la twig feature-* se estaba utilizando para las implementaciones de producción y feature-* nombre por master :

  1. Haga clic derecho en la function relevante- feature-* twig.
  2. Haga clic en la Rename feature-*...
  3. Ingrese master y click Aceptar.

Si tiene otra feature-* twig que se estaba utilizando para el desarrollo, haga lo mismo para cambiarle el nombre y develop .

La principal diferencia aquí es que ya no tendrá las twigs feature-* , que pueden ser o no lo que necesita.

Efecto en la historia

Supongamos que su historia se parece a esto:

 ... A--B [master] / *--*--*--C--D [develop] \ *--* ... *--*--* [feature-1] (should be develop) \ *--*--* [feature-2] (should be master) 

Después de seguir las instrucciones anteriores, su historial se verá así:

 ... A--B / *--*--*--C--D \ *--* ... *--*--* [develop, feature-1] \ *--*--* [master, feature-2] 

(Donde feature-1 y feature-2 pueden no existir más según la solución que elija).

Cuando mueve o elimina una twig, las confirmaciones no se eliminan de inmediato. Así que los commits A , B , C y D aún existen, simplemente no tienes una manera fácil de llegar a ellos. Después de un time, estos commits serán recogidos por Git, así que asegúrese de agregar una twig o label allí si desea savelos.