Revertir una confirmación de fusión desde una twig protegida en GitHub.com

Protegimos nuestra sucursal de desarrollo en GitHub para que nadie en las etapas posteriores pueda impulsar su compromiso directamente. Las confirmaciones deben pasar por una twig de características específica y fusionarse a través de una request de extracción.

Hubo un escenario en el que una twig de características se fusionó en la twig de desarrollo (después de la revisión y los cambios correctos) y debemos revertirla más tarde (tal vez debido a cambios en los requisitos). Si trato de revertir el commit de fusión en sentido descendente, no me permitirá presionar, ya que la twig está protegida. Recuerdo que GitHub proporcionaba el button de revertir cuando fusionamos la twig. Pero de alguna manera no puedo ver (o encontrar) el button ahora. Necesitábamos revertir la confirmación de prioridad, por lo que eliminamos la protección de la twig de desarrollo por el momento y presionamos el command revertir (el hack más feo).

¿Hay alguna otra alternativa mejor para revertir una confirmación desde una twig protegida? Tal vez estoy perdiendo o entendiendo algunas características de GitHub.

Una situación más es, ¿qué sucede si eliminé la twig de GitHub después de fusionarme, entonces, cómo la revertiría?

Revertir en GitHub

No es necesario restablecer (recuperar) las twigs en GitHub para revertir las confusiones de fusión resultantes de requestes de extracción. Por ejemplo:

Solicitud de extracción de Revertable

Solicitud de extracción no reversible

Algunas veces el button de revertir no aparece. Desde la Ayuda de GitHub para revertir una request de extracción :

Nota: Es posible que necesite usar Git para revertir manualmente las confirmaciones individuales si:

  • Revertir la request de extracción provoca conflictos de combinación
  • La request de extracción original no se fusionó originalmente en GitHub (por ejemplo, utilizando una combinación de avance rápido en la command-line)

Me tomó un time encontrar un ejemplo, pero si la twig de la cabeza no se fusionó con la twig de la base usando el button verde grande en GitHub, entonces no se puede revertir en GitHub:

Solicitud de extracción no reverenda

git revert

Localmente en la línea de command, puede usar el command git revert para revertir los cambios.

Esto funcionará tanto en su twig protegida como en una twig descendente. git revert crea un nuevo compromiso por delante del HEAD actual, por lo que no es necesario forzar el push, y si proviene de una twig downstream, puede crear manualmente una request de extracción para los cambios revertidos.

Revertir un commit de fusión es un poco más complicado que revertir un commit de padre único, así que sugeriría echar un vistazo a esta pregunta para más información, ya que es algo que nunca he hecho antes.

Si las personas no se sienten cómodas utilizando la command-line, creo que SourceTree tiene un elemento en el menu contextual para revertir una confirmación, pero no sé cómo maneja las asignaciones de fusión. Puede haber opciones similares en otras aplicaciones GUI.

¡Espero que esto ayude!