GitHub Resolve Conflicts Lost Permit History

Le ha sucedido esto a usted?

Nuestro equipo de desarrollo transfirió recientemente nuestra base de código y prácticas de trabajo a GitHub en lugar de utilizar GitLab. Nuestra configuration de sucursales es la siguiente:

  1. Dominar
  2. Puesta en escena
  3. Desarrollo
  4. La twig individual 1 [se llamará branch1 para esta pregunta]
  5. La twig individual 2 [se llamará branch2 para esta pregunta]
  6. La twig individual 3 [se llamará branch3 para esta pregunta]
  7. etc …

Tuvimos una situación en la que la twig 1 terminó de desarrollar lo que tenían que hacer, pero se fusionó desde la twig Desarrollo a la twig1 antes de volver a fusionarse con Desarrollo. Descubrió que había conflictos de fusión, así que utilicé el button Resolver conflictos de GitHub (que me envió a su útil herramienta web para resolver conflictos … ver aquí https://help.github.com/articles/resolving-a-merge-conflict-on –github / ). Una vez que se cometieron los conflictos, abrió una request de extracción de la twig1 a Desarrollo para ser revisada antes de la fusión. Sin embargo, nos dimos count de que todos los cambios en el historial y el código de confirmación se habían producido antes de que desapareciera el conflicto de fusión manual, y no había forma de revisar sus cambios. Más extraño aún es que su código ya parecía haberse fusionado con Development, pero no había ningún historial de esto, así que no sabemos cómo sucedió.

Tuvimos una situación similar con branch2. Hubo conflictos cuando se fusionó de Desarrollo a branch2, se utilizó la herramienta de fusión en GitHub y todo el historial de confirmaciones y cambios de código desapareció. Sin embargo, ninguno del código se fusionó accidentalmente con Development.

branch3 también tuvo conflictos de combinación, pero usó la línea de command (GitBash) para resolver estos conflictos y el historial de confirmaciones aún existía cuando estaba listo para fusionarse con Development.

¿Podrían los problemas que tuvimos con branch1 y branch2 hacer con la herramienta de fusión a través de GitHub? Google no fue demasiado útil …

Gracias 🙂

Es causado por los pasos cuando fusionó y extrajo la request. La request de extracción (PR) necesita antes de fusionarse . El propósito de PR es permitir que otros revisen la fusión antes de que realmente se ejecute. Si desea fusionar branch1 en la twig de desarrollo, puede crear una request de extracción basada en la twig de desarrollo y comparar branch1. Después de que se apruebe el PR, entonces branch1 puede fusionarse en una twig de Desarrollo.

El paso fusionar de Desarrollo a twig1 es innecesario o nocivo si fusiona fusionar branch1 a Desarrollo. Podemos ilustrar por debajo del gráfico:

A---B---C branch1 \ D---E Development 

Después de fusionar Desarrollo a branch1

 A---B---C---F branch1 \ / D---E Development 

Después de fusionar la twig 1 con la twig Desarrollo, solo causó la twig 1 y Desarrollar punto para confirmar. Es una fusión de avance rápido.

 A---B---C---F branch1, Development \ / D---E 

Entonces, solo necesita fusionar branch1 a la twig de Desarrollo, el gráfico debe ser

 A---B---D---E--- F' branch1 \ / ----C---- Development 

Para recuperar su branch1 y Development al estado de antes de fusionar worongly (commitC y E por separado), necesita los siguientes commands:

 git checkout branch1 git reset --hard <commit id for C> git checkout Development git reset --hard <commit id for E>