Renomear um branch durante a solicitação pull

101

No Github, você pode fazer solicitações pull para adicionar funcionalidade a um projeto. As contribuições devem ser feitas em um branch que, se a solicitação for aceita, será mesclado com o branch master (ou um análogo) do projeto.

Agora, enviei uma solicitação pull no Github e minhas contribuições estão em um branch chamado patch-1. Posso modificar o nome da filial localmente por

git branch -m patch-1 newname

e, em princípio, também posso renomeá-lo no meu repositório bifurcado no Github, seguindo as instruções encontradas nesta resposta . Isso é feito na prática removendo o branch antigo, patch-1no meu caso, e reencontrando-o com um nome diferente newname.

É permitido renomear o branch patch-1em meu repositório bifurcado no Github quando constitui uma solicitação pull? Ou causa problemas no gerenciamento de solicitações pull?

Existe alguma maneira de renomear um branch em um repositório bifurcado no Github quando esse branch é uma solicitação pull?

Michele
fonte

Respostas:

117

"Renomear" um branch remoto no git, conforme indicado pelo link que você forneceu, é realmente apenas deletar um branch, seguido de enviar um novo com o mesmo hash de commit, mas com um novo nome. Se você tiver uma solicitação pull aberta para o branch patch-1, ao excluir esse branch, a solicitação pull será fechada.

Portanto, não, você não pode renomear o branch com uma solicitação pull aberta sem excluir o branch e remover a solicitação pull. No entanto, nada o impede de fazer isso, enviar um novo branch com um novo nome e criar uma nova solicitação pull.

Arbylee
fonte
186
uma razão para não fazer isso é perder a discussão sobre o PR existente.
Johnny Everson
6
Não entendo por que uma restrição tão rígida quanto à renomeação do ramo de origem no PR. O mesmo bahaviour irritante existe no bitbucket. Outra abordagem seria editar o PR e mudar a filial de origem para outra filial. Alguém poderia dizer "se você mudar o ramo de origem, então é um novo PR de qualquer maneira". Tecnicamente, sim, mas também nada impede que o desenvolvedor configure o upstream de um branch completamente diferente e faça um git push -f. O PR é atualizado com um código totalmente novo e ainda é o "mesmo" PR.
L. Holanda
31

Resposta curta:

Não

Abordagem alternativa:

  1. Abra um novo PR com uma nova filial (renomeada)
  2. Feche o PR antigo referenciando o novo (por exemplo, fechado em favor de #new_pr_id)
  3. Modifique a descrição do novo PR (por exemplo, substitui #old_pr_id)
  4. (opcional) Faça um comentário sobre uma discussão relevante sobre o antigo PR

Nota:

O nome de uma filial remota (constituindo um PR) precisava ser alterado, porque o sistema de construção precisava do nome da filial que termina com o ID do tíquete. No entanto, o PR foi aberto antes da criação oficial do ingresso (a partir das especificações) e continha uma discussão valiosa. A abordagem descrita era a única maneira de fazer o sistema de compilação funcionar e também não perder nenhuma informação (embora houvesse uma etapa extra para rastreá-la).

Slobodan Ilic
fonte
9
Dado que os ramos são normalmente excluídos após serem mesclados, acho melhor "tolerar" que o nome seja impreciso por um tempo do que adicionar a sobrecarga de um novo PR que se refere ao antigo PR com o objetivo de rastrear a discussão histórica.
Neo