La estrategia de la sucursal con Git no es del todo correcta

estamos usando git en mi proyecto pero no puedo hacerlo funcionar del modo que quiero. ¡Podría hacerlo con un poco de experiencia en Git / branching!

Estamos utilizando la function de twig por function y, a veces, tenemos varios desarrolladores que trabajan en una function. Uno de los principales problemas es que dejemos el código en la twig de características hasta que se haya revisado, y estamos tratando de minimizar el número de confirmaciones al aplastarlas, para facilitar la revisión y mantener el logging limpio.

El process básico para desarrollar una function es este:

  • crear la twig principal de funciones en el repository local y remoto (ej. myfeature, origin / myfeature)
  • crear mi twig de característica local (por ejemplo, myfeature-grant)
  • hacer el trabajo en myfeature-grant, potencialmente a través de varios commits
  • aplastar las confirmaciones en myfeature-grant con una rebase -i HEAD ~ x
  • rebase myfeature-grant con myfeature, e ingresa allí
  • presione los cambios a origen / característica, y haga que alguien lo revise allí

Esto funciona bien, aparte del hecho de que si quiero hacer una copy de security de mis cambios (por ejemplo, si la function tarda más de un día), lo estoy haciendo en el sistema de files, lo cual parece una locura.

Entonces, en lugar de solo tener myFaature-grant, también tengo una versión remota, origin / myfeature-grant, a la que puedo enviar mis cambios como una copy de security. El problema surge cuando quiero aplastar mis commits en myFeature-grant, ya que no puedo enviarlos a origen / myFeature-grant, así que tengo que eliminar el origen / myFeature-grant. (No se puede hacer push -f debido a la configuration del repository remoto).

Entonces mi pregunta es, ¿cómo uso git en esta situación? Algunas de las opciones que he considerado son:

  • Solo elimine origin / myfeature-local (pero no me gusta estar sin copy de security, incluso durante unos minutos mientras fusiono cosas)
  • No elimine las confirmaciones, y haga que la revisión sea más fácil con mejores herramientas
  • Usa una estrategia diferente por completo

(Sé que no tener cambios que abarquen más de un día también lo resolvería, pero no es ahí donde estamos).

Perdón por la larga pregunta, ¡gracias por seguir con esto!

Una opción más para usted: justo antes de la revisión, cree una nueva twig en lugar de su twig de características desde el mismo punto donde comenzó la twig de características; después de eso, combine los cambios de la twig de características en su nueva twig con git merge --squash – y pase esta nueva twig para su revisión.

(Aunque sí voto por una mejor herramienta.)

Puede pedirle al administrador del server de repo que le proporcione un informe adicional en el que pueda forzar el envío.