GitHub: reabrindo uma solicitação pull mesclada

101
  • Eu fiz algumas mudanças
  • Eu enviei uma solicitação de pull
  • A solicitação pull foi aceita e mesclada.
  • Encontramos um bug
  • As alterações foram removidas novamente enquanto eu consertava o bug.

Já corrigi o bug e quero reenviar a solicitação pull com 1 confirmação extra. Existe alguma maneira de reabrir a solicitação pull ou atualizá-la, ou eu tenho que criar uma nova solicitação pull, digitar a descrição etc. novamente? Gitorious tem esse recurso e recentemente mudamos para o GitHub.

Michael Parker
fonte
Eu estava em uma situação semelhante hoje, ou seja, usei o botão "Merge Pull Request" que, por padrão, mescla as alterações na ramificação de destino e fecha o PR. Mais tarde, descobri um bug no teste que queria que o desenvolvedor original corrigisse. Eu queria uma forma de reabrir este PR para que mais commits pudessem ser adicionados a este mesmo PR, mas não consegui porque não há um botão para reabrir o PR.
SBirthare de

Respostas:

114

A resposta parece ser: você não pode.

Depois que uma solicitação pull é mesclada e fechada, ela é bloqueada para sempre e não pode ser reaberta. Se sua solicitação de pull for mesclada, fechada e suas alterações forem retiradas (por meio de empurrar de volta para antes da fusão), você precisará adicionar commits ao branch e criar uma nova solicitação de pull, copiando todos os detalhes e provavelmente fornecendo um link para a solicitação pull original para salvar manualmente o histórico.

Pode ser um bom pedido de recurso para o futuro GitHub.

Michael Parker
fonte
8
Não sei quando foi alterado, mas você pode comentar e reabrir PRs fechados agora.
LB--
16
@LB, não parece que você pode reabrir PRs que foram fechados e mesclados .
A Kaptur
1
Você realmente pode. Assumindo que você reverteu o merge inicial, você pode fazer um branch do repo principal, e neste novo branch apenas reverter o commit que estava revertendo o merge.
SsjCosty
7
@SsjCosty Mas isso não é reabrir um PR fechado e fundido. Você sempre pode abrir novas solicitações pull, que é o que sua solução exige.
Adam Grant
1
"Pode ser um bom pedido de recurso para o futuro GitHub." Na verdade, não, não iria. Se os PRs pudessem ser redefinidos após a criação, então as pessoas que checavam o PR em momentos diferentes, potencialmente se desviariam. Basta criar outro PR e "mencionar" o anterior no texto. Se você quiser fazer referência a algum tipo de marco, não é um PRs para se olhar, seriam marcas.
Scott Prive
12

Acabei de reabrir com sucesso uma solicitação pull por

  1. Comentando sobre a solicitação pull
  2. Clicar no botão 'Enviar e reabrir' que apareceu no formulário de comentário.
Tim Lovell-Smith
fonte
1
Não consegui replicar isso - você pode explicar as etapas necessárias para ver esse comportamento? Eu tentei comentar sobre uma solicitação de pull fechada (não funcionou), comentando sobre uma solicitação de pull fechada e empurrando para o branch que estava puxando (não funcionou). Mais alguma coisa para tentar? A solicitação de pull precisa ser mesclada e depois descompactada de alguma forma?
Michael Parker
Não sei qual é o requisito oculto que faz a diferença. Pode ser qualquer um de (enviei uma nova alteração para solicitação de pull, sou membro dos proprietários do projeto, outro ...)
Tim Lovell-Smith
1
Agora tentei tudo o que você mencionou, ainda não consigo ver. Eu sou o proprietário do repo. Pesquisar no google por "Enviar e reabrir GitHub" fornece um único hit - esta página. Qualquer informação adicional seria extremamente útil. Sua solicitação de pull foi inicialmente negada?
Michael Parker
52
Posso replicar isso com solicitações pull não mescladas - mas não é disso que trata este tópico.
Dan Tello
2
Sim, ele está se referindo a puxões fechados, não puxados fundidos.
loujaybee
4

Basta derivar um novo branch do branch existente onde você fez 1 commit extra. A partir daí, envie a solicitação de pull.

Siva Gollapalli
fonte
3
Isso resultaria em uma nova solicitação de pull sem nenhum histórico do original.
Dave
1
Isso é o que acabei fazendo. Sim, a história é menos linear, mas para mim está tudo bem.
Possen
4

Você pode usar a ação de reversão:

insira a descrição da imagem aqui

Ele criará outra solicitação pull desfazendo todas as alterações feitas no PR mesclado.

William Weckl
fonte
Esta não é a prática recomendada :)
antonbormotov
2
@antonbormotov você pode sugerir uma abordagem melhor?
William Weckl
Vamos supor que fundimos pr com commits (mA e mB) para o branch estável que queremos reverter. Depois de mesclar "revert" pr, o histórico se parecerá com uma árvore de commits: XY-mA-mB-CD-rA-rB-EF. Por que você quer ver todos esses commits no histórico, que aplicam mudanças (mA, mB) e então os cancelam (rA, rB)? Seria melhor rebase e remover aqueles commits "ruins" mA e mB do branch estável e manter o histórico limpo. Claro, faz sentido se a fusão for relativamente recente.
antonbormotov
1
Não apenas a história ficará feia, você também não pode mais simplesmente mesclar os commits revertidos de volta quando estiver pronto.
Michael
Eu tive um cenário um pouco semelhante com pequena diferença. Eu tinha um PR que precisava revisar e deveria aguardar a fusão de outro PR. Mas eu não vi e mesclei este PR prematuramente. Na verdade, eu fiz o que @WilliamWeckl sugeriu. Mas agora quero criar o mesmo PR com as mesmas alterações que foram criadas originalmente. Mas quando estou criando o PR, o branch master não mostra nenhuma diferença, embora quando vejo arquivos individuais eles são diferentes. Alguma ideia?
Vikas