Skip to main content

Solução de problemas de solicitações de pull empilhadas

Resolva problemas comuns com solicitações de pull empilhadas, incluindo conflitos de rebase, mesclagens bloqueadas, operações interrompidas e problemas de fila de mesclagem.

Observação

Esse recurso está em versão prévia pública e está sujeito a alterações.

Este artigo aborda problemas comuns que você pode encontrar ao trabalhar com solicitações de pull empilhadas e como resolvê-las.

Uma rebase relata um conflito

Quando uma rebase em cascata encontra um conflito, gh stack rebase interrompe e lista os arquivos conflitantes.

Para resolver o conflito e continuar:

  1. Abra cada arquivo conflitante e resolva os marcadores de conflito (<<<<<<<, , =======). >>>>>>>

  2. Preparar os arquivos resolvidos.

    git add .
    
  3. Continue a rebase. Os branches restantes são rebasados automaticamente.

    gh stack rebase --continue
    

Se o conflito for muito complexo ou você quiser recomeçar, anule a rebase para restaurar todos os branches para seu estado de pré-rebase.

gh stack rebase --abort

Uma sincronização interrompida por causa de um conflito

Se um conflito for detectado durante a execução gh stack sync, todos os branches serão restaurados para o estado original para que nada seja deixado parcialmente atualizado. Resolva o conflito interativamente executando uma nova base diretamente e, em seguida, envie por push os branches atualizados.

gh stack rebase
gh stack push

Uma sessão de modificação não será iniciada

gh stack modify requer um estado inicial limpo. Se não for iniciado, confirme se:

  • Você tem uma pilha ativa com check-out.
  • Sua árvore de trabalho está limpa.
  • Nenhuma rebase está em andamento.
  • Nenhuma solicitação de pull é enfileirada para mesclagem.
  • O histórico de confirmação é linear. Se não for, execute gh stack rebase primeiro.

Uma sessão de modificação foi interrompida

Se gh stack modify for interrompido, por exemplo, por um conflito que você não deseja resolver ou uma falha de terminal, você pode restaurar a pilha para o estado em que ela estava antes de começar. Um instantâneo de pré-modificação é armazenado em cache localmente para recuperação.

gh stack modify --abort

Se ocorreu um conflito durante a aplicação de alterações e você deseja continuar, resolva o conflito, configure os arquivos com git adde execute gh stack modify --continue.

Uma solicitação de pull não pode ser mesclada

Uma solicitação de pull em uma pilha só pode mesclar quando ela e cada solicitação de pull abaixo dela atende a todos os requisitos de mesclagem e a pilha tem um histórico totalmente linear. Se a mesclagem estiver bloqueada, verifique se:

  • A solicitação de pull e todas as solicitações de pull abaixo dela exigiram revisões e verificações de passagem.
  • A pilha tem um histórico linear. Se as alterações foram enviadas por push para um branch inferior ou o tronco avançou, o histórico pode não ser mais linear.

Para restaurar um histórico linear, execute gh stack rebase e clique gh stack pushem Rebase stack na caixa de mesclagem. Para obter instruções, consulte Gerenciando solicitações de pull empilhadas.

A mesclagem parou no meio da pilha

As verificações de pré-mesclagem são executadas antes de qualquer mesclagem, mas uma mesclagem ainda pode falhar. Por exemplo, devido a um conflito inesperado ou uma falha intermitente. Se ocorrer uma falha em parte, a mesclagem será interrompida nessa solicitação de pull.

  • Solicitações de pull abaixo dela que mescladas permanecem desembarcadas com êxito no branch base.
  • A solicitação de pull com falha e as solicitações de pull acima dela permanecem abertas.

Resolva o problema na solicitação de pull com falha e tente novamente a mesclagem para pousar o restante da pilha.

Uma solicitação de pull foi removida da fila de mesclagem

As pilhas são mantidas juntas na fila de mesclagem. Se uma solicitação de pull for removida ou ejetada da fila, todas as solicitações de pull acima dela na pilha também serão ejetadas e removidas. Adicione novamente a pilha à fila depois que o problema subjacente for resolvido.

Uma pilha grande também pode ser dividida entre grupos de mesclagem consecutivos: a fila de mesclagem permite que um grupo de mesclagem exceda seu tamanho máximo configurado em até 50% para manter uma pilha unida e todas as solicitações de pull que não se ajustam continuarão em grupos subsequentes até que a pilha completa tenha aterrissado.

Você fechou uma solicitação de pull no meio da pilha

Fechar uma solicitação de pull no meio de uma pilha impede que todas as solicitações de pull acima dela sejam mescladas. A relação de pilha é preservada, portanto, para abrir uma solicitação de pull diferente ou alterar a estrutura da pilha, primeiro você deve dissolver a pilha e depois recriá-la.

Você pode remover do GitHub site ou reestruturar a pilha com gh stack modify. O desassocupamento remove apenas as solicitações de pull abertas, de rascunho e fechadas; As solicitações de pull mescladas e enfileiradas permanecem na pilha. Confira Gerenciando solicitações de pull empilhadas e Gerenciando solicitações de pull empilhadas.

As confirmações não são assinadas após uma rebase

Uma rebase disparada da solicitação de pull é executada nos GitHubservidores e essas confirmações não são assinadas. Se o repositório exigir confirmações assinadas, basee-se GitHub CLI novamente em vez disso.

  • A execução gh stack rebase usa as operações locais do Git, portanto, as confirmações geradas seguem a configuração de assinatura de confirmação do Git local.
  • Depois de rebasing, envie por push os branches atualizados com gh stack push.

Você não pode criar uma pilha entre bifurcações

As solicitações de pull empilhadas exigem que todos os branches estejam no mesmo repositório. Não há suporte para pilhas entre bifurcações.