tipos tag remove practices etiquetas crear best git release

remove - git tag best practices



git lanza la gestión (3)

Lo que está preguntando es un problema típico de flujo de trabajo de fusión : qué fusionar de dónde a dónde.

Pero también debe recordar que en un DVCS, una fusión también será influenciada por consideraciones de publicación (son aquellas sucursales que se envían a repositorios locales, o públicas)

La rama "maestra" en particular es la que se ve por defecto cuando alguien clona su repositorio, lo que significa que debe hacer referencia a lo que considera más útil para ese usuario / desarrollador. (dado que otras ramas no están referenciadas localmente por defecto )

1 / Cuando agrego alguna característica en la versión 2 y debería ir a 3 también, pero no a 1

De hecho, puedes unir r2 a master, después de haber hecho una serie de commits a r2 para lograr las evoluciones necesarias. De esta manera, solo un número limitado de commits son visibles en el master, evitando "commit cluttering".
Sin embargo, para r3, puede seleccionar lo que necesita de r2, si r3 está siendo empujado y publicado. De lo contrario, podría rebase r3 en r2. Ver la pregunta " git workflow y rebase vs merge "

2 / Cuando tengo que cambiar algo en todas las versiones, ¿debería hacerlo en master y seleccionarlo en todas las ramas?

Debería hacerlo en r2, y luego combinar en master y r1 y r3. De esta forma, solo se agrega una confirmación a esas ramas.

3 / ¿Debo mantener al maestro actualizado con la versión más reciente (rama de la versión 3) o mejor dicho desarrollador en la versión 3 y fusionarme con el maestro justo antes de necesitar la versión 4?

Depende de lo que quiere que su otro colega vea cuando clonan el repositorio.
Pero a partir del 1 /, me doy cuenta de que el maestro representa r2 (desarrollo actual) y no r3 (futuro, refactorización a largo plazo)

4 / Cuando arreglo algo en release-1 o release-2, ¿debería fusionarlo o seleccionarlo para dominar o más bien?

  • r1: cherry-pick: no todo lo que está arreglando en r1 está destinado a fusionarse con el desarrollo actual.
    En realidad, prefiero alegremente: seleccionar r1 en r2, asegurarme de que todo funciona allí y luego fusionarme en master.
  • r2: fusionar Si el maestro representa r2, una fusión simple es suficiente.

No pude encontrar nada que sea el enfoque "correcto" para administrar los lanzamientos usando git. Diga, tengo master, release-1, release-2 y release-3 branches. La versión 1 ya ha sido lanzada y solo hago correcciones de errores y lanzo versiones que se etiquetan en ella. La versión 2 se lanzará pronto y desarrollo principalmente en esta rama, mientras que en 3 desarrollo cosas que serán necesarias en el futuro.

  1. Cuando agregue alguna función en la versión 2 y también debería ir a 3, pero no a 1, ¿debería?

    • fusionar release-2 con master y cherry-pick relacionados con la función de release-3?
    • el compromiso relacionado con la función de recolección de cereza se dirige a la función maestra y luego se selecciona a la perfección a la versión 3?
    • ¿algo más?
  2. Cuando tengo que cambiar algo en todas las versiones, ¿debería hacerlo en master y seleccionarlas en todas las ramas?

  3. ¿Debo mantener al maestro actualizado con la versión más reciente (rama de la versión 3) o mejor dicho desarrollador en la versión 3 y fusionarme con el maestro justo antes de necesitar la versión 4?

  4. Cuando arreglo algo en release-1 o release-2, ¿debería unirme o seleccionarlo para dominar o más bien?

No estoy seguro de cuándo debería elegir, cuándo debería fusionarme y si el flujo del código entre las ramas es correcto.



Yo lo haría:

1) Fusiona r2 con master y luego master con r3 (r3 debería poder aceptar todos los cambios en master)

2) Comprometerse con r1, fusionarse con r2, fusionar r2 con master y luego combinar master con r3

3) Tal vez deberías usar master en lugar de r3, y solo desarrollar en branch off r3 cuando el lanzamiento esté en preparación y combinar todos los cambios aquí para masterizar (que será la próxima versión). O use las ramas "principal" y "siguiente" como Linux.

4) Fusionar para dominar

Creo que fusionar es más limpio que elegir y pensar que solo debes elegir cuando necesitas respaldar una función o una corrección de errores en una rama anterior que no esperabas cuando se realizó la confirmación (si no, confirma la rama / release más antiguo quiere el código encendido).