GitHub: reapertura de una solicitud de extracción combinada

101
  • Hice algunos cambios
  • Envié una solicitud de extracción
  • La solicitud de extracción fue aceptada y fusionada.
  • Encontramos un error
  • Los cambios se eliminaron de nuevo mientras solucioné el error.

Ahora solucioné el error y quiero volver a enviar la solicitud de extracción con 1 confirmación adicional. ¿Hay alguna forma de volver a abrir la solicitud de extracción o actualizarla, o tengo que crear una nueva solicitud de extracción, escribir la descripción, etc. nuevamente? Gitorious tiene esta función y recientemente nos mudamos a GitHub.

Michael Parker
fuente
Hoy me encontraba en una situación similar, es decir, utilicé el botón "Fusionar solicitud de extracción" que, por defecto, fusiona los cambios en la rama de destino y cierra el PR. Más tarde descubrí un error en las pruebas que quería que corrigiera el desarrollador original. Quería una forma de reabrir este PR para que se puedan agregar más confirmaciones a este mismo PR, pero no pude, ya que no hay un botón para reabrir el PR.
SBirthare

Respuestas:

114

La respuesta parece ser: no puedes.

Una vez que se fusiona y se cierra una solicitud de extracción, se bloquea para siempre y no se puede volver a abrir. Si su solicitud de extracción se fusiona, se cierra, luego se eliminan los cambios (mediante la fuerza que empuja hacia atrás antes de la combinación), deberá agregar confirmaciones a la rama y crear una nueva solicitud de extracción, copiando todos los detalles y probablemente proporcionando un enlace a la solicitud de extracción original para guardar manualmente el historial.

Podría ser una buena solicitud de función para GitHub en el futuro.

Michael Parker
fuente
8
No sé cuándo se modificó, pero ahora puede comentar y volver a abrir los RP cerrados.
LB--
16
@LB, no parece que pueda volver a abrir PR que se han cerrado y fusionado .
A Kaptur
1
De hecho, puedes. Suponiendo que ha revertido la fusión inicial, puede hacer una rama del repositorio principal, y en esta nueva rama simplemente revertir la confirmación que estaba revirtiendo la fusión.
SsjCosty
7
@SsjCosty Pero eso no es reabrir un PR cerrado y fusionado. Siempre puede abrir nuevas solicitudes de extracción, que es lo que requiere su solución.
Adam Grant
1
"Podría ser una buena solicitud de función para GitHub en el futuro". En realidad, no, no lo haría. Si las relaciones públicas pudieran redefinirse después de la creación, entonces las personas que revisan las relaciones públicas en diferentes momentos, potencialmente se desviarían. Simplemente cree otro PR y "mencione" el anterior en el texto. Si desea hacer referencia a algún tipo de hito, no es un PR para mirar, serían etiquetas.
Scott Prive
12

Acabo de reabrir con éxito una solicitud de extracción por

  1. Comentar sobre la solicitud de extracción
  2. Haciendo clic en el botón "Enviar y volver a abrir" que apareció en el formulario de comentarios.
Tim Lovell-Smith
fuente
1
No he logrado replicar esto, ¿puede explicar los pasos necesarios para ver este comportamiento? Intenté comentar una solicitud de extracción cerrada (no funcionó), comentar una solicitud de extracción cerrada y presionar hacia la rama que estaba ingresando (no funcionó). ¿Algo más para probar? ¿Se requiere que la solicitud de extracción se fusione y luego se separe de alguna manera?
Michael Parker
No sé cuál es el requisito oculto que marca la diferencia. Podría ser cualquiera de (he enviado un nuevo cambio para una solicitud de extracción, soy miembro de los propietarios del proyecto, otro ...)
Tim Lovell-Smith
1
Probé todo lo que mencionaste, todavía no puedo verlo. Soy el propietario del repositorio. Buscar en Google "Enviar y volver a abrir GitHub" proporciona un solo resultado: esta página. Cualquier otra información sería de gran ayuda. ¿Su solicitud de extracción fue denegada inicialmente?
Michael Parker
52
Puedo replicar esto con solicitudes de extracción no fusionadas, pero de eso no se trata este hilo.
Dan Tello
2
Sí, se refiere a tirones cerrados, no tirones combinados.
loujaybee
4

Simplemente obtenga una nueva rama de la rama existente en la que haya realizado 1 confirmación adicional. Desde allí, envíe la solicitud de extracción.

Siva Gollapalli
fuente
3
Eso daría como resultado una nueva solicitud de extracción sin el historial del original.
Dave
1
Esto es lo que terminé haciendo. Sí, la historia es menos lineal, pero para mí está bien.
possen el
4

Puede utilizar la acción revertir:

ingrese la descripción de la imagen aquí

Creará otra solicitud de extracción deshaciendo todos los cambios realizados en el PR combinado.

William Weckl
fuente
Esta no es la mejor práctica :)
antonbormotov
2
@antonbormotov, ¿puede sugerir un enfoque mejor?
William Weckl
Supongamos que hemos fusionado pr con confirmaciones (mA y mB) en la rama estable que queremos revertir. Después de fusionar "revert" pr, el historial se verá como un árbol de confirmaciones: XY-mA-mB-CD-rA-rB-EF. ¿Por qué quiere ver todas estas confirmaciones en el historial, que aplican cambios (mA, mB) y luego los cancelan (rA, rB)? Sería mejor volver a establecer la base y eliminar los "malos" confirmados mA y mB de la rama estable y mantener limpio el historial. Por supuesto, tiene sentido si la fusión fue relativamente reciente.
antonbormotov
1
No solo el historial se verá feo, sino que ya no podrá simplemente fusionar las confirmaciones revertidas cuando esté listo.
Michael
Tuve un escenario algo similar con una pequeña diferencia. Tenía un RP que necesitaba revisar y se suponía que debía esperar a que se fusionara otro RP. Pero no lo vi y fusioné este PR prematuramente. De hecho, hice lo que sugirió @WilliamWeckl. Pero ahora quiero crear el mismo PR con los mismos cambios que se crearon originalmente. Pero cuando estoy creando el PR, la rama maestra no muestra ninguna diferencia, aunque cuando veo archivos individuales, son diferentes. ¿Alguna idea?
Vikas