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.


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.


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.

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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.