Skip to main content

Fazer checkout de pull requests no local

Quando alguém envia a você uma pull request de uma bifurcação ou um branch do seu repositório, talvez você queira fazer merge dela no local para resolver um conflito de merge ou para testar e verificar as alterações antes de fazer merge no GitHub.

Quem pode usar esse recurso?

Anyone with write access to a repository can pull a remote pull request down locally.

Platform navigation

Tool navigation

Observação: os autores de solicitações de pull podem conceder aos mantenedores do repositório upstream ou àqueles com acesso de push no repositório upstream a permissão para fazer commits para o branch de comparação da solicitação de pull em um fork pertencente ao usuário. Para obter mais informações, confira "Permitir alterações em um branch de pull request criado a partir de bifurcação".

Modificar uma pull request ativa no local

  1. Abaixo do nome do repositório, clique em Solicitações de pull.

    Captura de tela da página principal de um repositório. Na barra de navegação horizontal, uma guia, rotulada como "Solicitações de pull", é destacada em laranja escuro.

  2. Na lista de solicitações de pull, clique na solicitação de pull que deseja modificar.

  3. Para escolher o local em que deseja abrir a solicitação de pull, selecione o menu suspenso Código e clique em uma das guias.

    Captura de tela do título de uma solicitação de pull. Um botão com uma seta indicando um menu suspenso, rotulado "Código", está contornado em laranja escuro.

Para saber mais sobre GitHub CLI, confira "Sobre o a CLI do GitHub".

Para fazer check-out de uma solicitação de pull localmente, use o subcomando gh pr checkout. Substitua pull-request pelo número, pela URL ou pelo branch principal da solicitação de pull.

gh pr checkout PULL-REQUEST

Modificar uma pull request inativa no local

Se o autor de uma solicitação de pull não responder às solicitações ou tiver excluído sua bifurcação, as alterações propostas ainda poderão ser mescladas por meio de uma nova solicitação. No entanto, se quiser fazer alterações em uma pull request e o autor não estiver respondendo, será preciso executar algumas etapas adicionais para atualizar a pull request.

Depois que uma pull request for aberta, GitHub armazena todas as alterações remotamente. Em outras palavras, os commits em uma pull request estão disponíveis em um repositório mesmo antes da pull request sofrer merge. Isso significa que é possível fazer fetch de uma pull request aberta e recriá-la como sua própria.

Qualquer pessoa pode abrir uma pull request anteriormente aberta para continuar trabalhando nela, testá-la ou, até mesmo, abrir uma nova pull request com alterações adicionais. No entanto, somente colaboradores com acesso push podem fazer merge de pull requests.

  1. No nome do repositório, clique em Problemas do ou Solicitações de pull do .

    Captura de tela da página principal de um repositório. Há duas guias na barra de navegação horizontal, "Problemas" e "Solicitações de pull", com o contorno em laranja escuro.

  2. Na lista "Pull Requests", clique na pull request que deseja fazer merge.

  3. Encontre o número da ID da pull request inativa. Essa é a sequência de dígitos certa após o título da pull request.

    Captura de tela do título de uma solicitação de pull. O número da ID da solicitação de pull está contornado em laranja escuro.

  4. Abra TerminalTerminalGit Bash.

  5. Faça fetch da referência à pull request com base no número da ID, criando um branch no processo.

    git fetch origin pull/ID/head:BRANCH_NAME
    
  6. Alterne para o novo branch que se baseia nesta pull request:

    [main] $ git switch BRANCH_NAME
    > Switched to a new branch 'BRANCH_NAME'
    
  7. Nesse ponto, você pode fazer qualquer coisa que desejar com este branch. É possível executar alguns testes locais ou fazer merge de outros branches no branch.

  8. Quando estiver pronto, você poderá fazer push do novo branch:

    [pull-inactive-pull-request] $ git push origin BRANCH_NAME
    > Counting objects: 32, done.
    > Delta compression using up to 8 threads.
    > Compressing objects: 100% (26/26), done.
    > Writing objects: 100% (29/29), 74.94 KiB | 0 bytes/s, done.
    > Total 29 (delta 8), reused 0 (delta 0)
    > To https://github.com/USERNAME/REPOSITORY.git
    >  * [new branch]      BRANCH_NAME -> BRANCH_NAME
    
  9. Crie uma solicitação de pull com seu novo branch.

Erro: falha ao fazer push de algumas refs

O namespace refs/pull/ remoto é somente leitura. Se você tentar fazer push de qualquer commit nele, este erro será exibido:

! [remote rejected] HEAD -> refs/pull/1/head (deny updating a hidden ref)
error: failed to push some refs to 'git@github.local:USERNAME/REPOSITORY.git'

Dica: quando você remover ou renomear uma referência remota, o namespace refs/pull/origin/ local não será afetado por chamadas a git-remote.