Estoy basando mi repositorio de Git en un modelo de ramificación Git exitoso y me preguntaba qué sucede si tiene esta situación:
Digamos que estoy desarrollando en dos ramas de características A y B, y B requiere el código de A. El nodo X introduce un error en la función A que afecta a la rama B, pero esto no se detecta en el nodo Y donde las funciones A y B se fusionaron y Las pruebas se realizaron antes de volver a ramificarse y trabajar en la siguiente iteración.
Como resultado, el error se encuentra en el nodo Z por las personas que trabajan en la función B. En esta etapa, se decide que se necesita una corrección de error. Esta corrección debe aplicarse a ambas funciones, ya que las personas que trabajan en la función A también necesitan que se solucione el error, ya que es parte de su función.
¿Debería crearse una rama de corrección de errores desde el último nodo de la función A (el que se bifurca desde el nodo Y) y luego fusionarse con la función A? ¿Después de lo cual ambas características se fusionan para desarrollarse nuevamente y probarse antes de ramificarse?
El problema con esto es que requiere que ambas ramas se fusionen para solucionar el problema. Dado que la característica B no toca el código en la característica A, ¿hay alguna forma de cambiar el historial en el nodo Y implementando la corrección y aún permitiendo que la rama de la característica B permanezca sin fusionar pero tenga el código fijo de la característica A?
Relacionado levemente: convención de ramificación de error Git
Respuestas:
Use un commit distinto para corregir el error en una rama, luego seleccione ese commit en la otra rama.
fuente
Podría decirse que no hay ningún error en A o X. Repare el error en la rama B donde se encontró. La corrección se propagará a X y A en el curso normal de los eventos.
fuente
Aunque no es un flujo de trabajo popular
git
, un flujo de trabajo que es popular en Mercurial sería actualizar a revisiónX
, corregir el error allí (comoX
2 ) y luego rehacer fusiónY
(que habría sido un par de fusiones en Mercurial).De hecho, este flujo de trabajo es más fácil en
git
ya que después de todo el mundo ha cambiado deY
aY
2 a continuación, los árbitros al originalY
se perderán y que finalmente será basura recogida. Enhg
lo que habría tenido para despojar manualmente esas confirmaciones para poner en orden su repositorio.fuente