Reutilizar una rama fusionada, ¿buena práctica?

36

Actualmente, solía crear una nueva sucursal cada vez que tenía que agregar una nueva función a mi aplicación.

Cuando mi función está terminada y es funcional, la combino con la rama maestra.

Pero más tarde, cuando necesito actualizar esta característica (como una mejora), ¿es mejor crear una nueva rama o necesito volver a crear la anterior con el maestro, la fusión se fusiona nuevamente?

Por ejemplo, tengo una rama llamada modeling-member en una aplicación Ruby on Rails. Más tarde, necesito agregar algunos atributos al modelo miembro (que se creó en esta rama). ¿Qué tengo que hacer? ¿Rebase esta rama con el maestro, actualice el modelo y fusione nuevamente o simplemente cree una nueva rama?

gaetanm
fuente
1
Si su proyecto se hace muy grande, la reutilización de las ramas antiguas requerirá mucho tiempo para que git cambie y / o se actualice. En comparación con los pocos segundos que lleva crear una nueva rama.
Reactgular

Respuestas:

34

Crea una nueva sucursal, porque:

  • Es menos probable que una nueva sucursal tenga conflictos de fusión cuando haya terminado y desee fusionarla en maestra. Pocas cosas son más propensas a errores que la solución de conflictos de fusión.

  • La característica puede haber sufrido varios cambios y actualizaciones desde su implementación original, haciendo que la rama original sea totalmente obsoleta. La única forma de actualizarlo es fusionar el maestro en la rama de características ... y en ese momento solo está bifurcando el maestro de una manera innecesariamente complicada.

  • Aunque solo sea por simplicidad, generalmente es una buena idea tener el mismo flujo de trabajo para actualizaciones, correcciones de errores y nuevas funciones. Eso se aplica a la ramificación, las revisiones de código, el uso del rastreador de errores y prácticamente todo lo demás. La diferencia entre actualizar una función existente, agregar una nueva función y corregir un error a menudo es subjetiva de todos modos.

Ixrec
fuente
7

Usa una nueva rama.

Para nombrar, podría considerar usar un formato interno que this_work es una extensión o cambiar a that_work

Por ejemplo, podrías nombrar la segunda rama

modeling-member--attributes

con - indicando que el nombre del nombre a la izquierda es la rama original

Abordamos un problema algo similar, ya que usamos los números de ticket de Jira para los nombres de sucursales. A veces hay un poco de trabajo adicional para el mismo boleto. A veces, un cambio de base de datos no se puede revertir. En esos casos, utilizamos, por ejemplo, la rama original SEND-123 y la segunda rama SEND-123a

Michael Durrant
fuente
0

Si desea guardar solo las confirmaciones de una fusión en el maestro y está usando github, puede usar "Fork" para cada nueva característica y hacer una solicitud de extracción y aceptar la solicitud de extracción después de completar cada nueva característica.

No recomiendo trabajar en sucursales antiguas, ya que puede tener conflictos cuando se fusiona con el jefe del maestro y, por supuesto, no es necesario hacerlo ...

Danilo Pereira De Luca
fuente
44
"u" no es una palabra inglesa. Dicho texto debe reservarse para textos y twitter.
Gort the Robot
@ Steven Ahora, incluso allí, cuando (para la mayoría de las personas) cada letra ya no requiere tres o cuatro pulsaciones de teclas, debe evitarse. :)
TZHX