¿Cómo reiniciarlo y aplicarlo a todos los usuarios de banches locales?

Tenemos esta estructura de sucursal:

  • maestro (compilation / implementación en producción)
  • qa (compilation / implementación en el entorno de preguntas y respuestas)
  • características sucursales

Entonces creamos una twig de características desde el maestro y luego la combinamos con qa (creada desde el maestro) cuando necesitamos validar la function con preguntas y respuestas.

A veces necesitamos rebuild qa del maestro porque algún desarrollo se fusionó directamente con el maestro (pequeños o correcciones de errores).

Lo que hice:

git checkout qa git reset --hard master git push --force origin qa 

Entonces, el control remoto ahora es exactamente como yo lo quiero.

PERO ahora, cuando los otros desarrolladores hacen git fetch , todas las confirmaciones que tienen en su qa local que no estaban en el maestro aparecen como confirmaciones salientes. Esto parece lógico. Tuvimos que hacer un git reset --hard origin/qa en la máquina de todos, pero es un poco peligroso.

¿Alguna otra solución?

EDITAR: ¿Por qué hacemos esto ?: Algunas características que estaban en la twig qa fueron abandonadas, por lo que necesitamos recrear la twig qa desde el maestro y luego fusionarla con todas las otras twigs.

Después de haber hecho git push --force pull on es la única opción. Para que sea less peligroso, primero crea una twig temporal para preservar la twig qa en un cliente, realiza un arrastre forzado, luego elige cuidadosamente las confirmaciones de qa conservadas y elimina la twig temporal.

Está utilizando (tal vez sin saberlo) el flujo de trabajo de " twig por function " de Adam Dymitruk, y ese es un gran flujo de trabajo.

Tenga en count que Dymitruk sugiere volver a crear qa desde cero (es decir, desde el master ) cada vez que cambie algo , no solo cuando desee "desactivar" una característica.

Eso significa: simplemente elimine la twig qa y vuelva a generarla por completo; teniendo cuidado de fusionar todas las twigs de características que lo tienen en el mismo order. Obviamente también quiere activar el caching git rerere y asegurarse de que todos los desarrolladores sincronicen ese caching entre ellos (usando git por supuesto).

Por lo tanto, no habrá fusiones o restablecimientos raros en ningún lado, solo un qa limpio y fresco en cada momento. Toda la operación se realizará mejor con la ayuda de algún script, o automáticamente por su agente de CI / CD.

Vea el sitio de Dymitruk para una descripción completa.