Skip to main content

Локальное получение для изменения запросов на вытягивание

Когда кто-то отправляет запрос на вытягивание из вилки или ветви репозитория, его можно объединить локально, чтобы разрешить конфликт слияния или протестировать и проверить изменения перед слиянием в GitHub.

Кто эту функцию можно использовать?

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

Platform navigation

Tool navigation

Примечание. Авторы запросов на вытягивание могут предоставить ответственным пользователям вышестоящего репозитория или тем, у кого есть доступ к отправке в вышестоящий репозиторий, разрешение делать фиксации в ветви сравнения их запроса на вытягивание в вилке, принадлежащей пользователю. Дополнительные сведения см. в разделе Разрешение изменений в ветви запроса на вытягивание, созданной из вилки.

Локальное изменение активного запроса на вытягивание

  1. В поле имени репозитория щелкните Запросы на вытягивание.

    Снимок экрана: главная страница репозитория. На горизонтальной панели навигации вкладка с меткой "Запросы на вытягивание" выделена темно-оранжевым цветом.

  2. В списке запросов на вытягивание выберите тот, который хотите изменить.

  3. Чтобы выбрать место, где вы хотите открыть запрос на вытягивание, выберите раскрывающийся список Код и щелкните одну из вкладок.

    Снимок экрана: название запроса на вытягивание. Кнопка со стрелкой, указывающей раскрывающееся меню с надписью "Код", описывается в темно-оранжевый цвет.

Дополнительные сведения о GitHub CLIсм. в разделе "Сведения о GitHub CLI".

Чтобы извлечь запрос на вытягивание локально, используйте подкоманду gh pr checkout. Замените pull-request номером, URL-адресом или главной ветвью запроса на вытягивание.

gh pr checkout PULL-REQUEST

Локальное изменение неактивного запроса на вытягивание

Если автор запроса на вытягивание не отвечает на запросы или удалил вилку, изменения, предложенные в этом запросе на вытягивание, по-прежнему могут быть объединены с помощью нового запроса на вытягивание. Однако если вы хотите внести изменения в запрос на вытягивание, а автор не отвечает, вам потребуется выполнить некоторые дополнительные действия, чтобы обновить запрос на вытягивание.

После открытия запроса на вытягивание GitHub удаленно сохраняет все изменения. Другими словами, фиксации в запросе на вытягивание доступны в репозитории еще до того, как для запроса на вытягивание выполняется слияние. Можно получить открытый запрос на вытягивание и воссоздать его как свой собственный.

Любой пользователь может работать с ранее открытым запросом на вытягивание, чтобы продолжить работу над ним, протестировать его или даже открыть новый запрос на вытягивание с дополнительными изменениями. Однако выполнять слияние для запросов на вытягивание могут только участники совместной работы с доступом на отправку.

  1. В поле имени репозитория щелкните Проблемы или Запросы на вытягивание.

    Снимок экрана: главная страница репозитория. На горизонтальной панели навигации две вкладки с меткой "Проблемы" и "Запросы на вытягивание" выделены в темно-оранжевый цвет.

  2. В списке "Запросы на вытягивание" щелкните тот, который требуется изменить.

  3. Найдите идентификатор неактивного запроса на вытягивание. Это последовательность цифр сразу после заголовка запроса на вытягивание.

    Снимок экрана: название запроса на вытягивание. Идентификатор запроса на вытягивание описывается в темно-оранжевый цвет.

  4. Откройте ТерминалТерминалGIT Bash.

  5. Получите ссылку на запрос на вытягивание по его номеру идентификатора, создав в процессе новую ветвь.

    git fetch origin pull/ID/head:BRANCH_NAME
    
  6. Перейдите в новую ветвь, основанную на этом запросе на вытягивание:

    [main] $ git switch BRANCH_NAME
    > Switched to a new branch 'BRANCH_NAME'
    
  7. На этом этапе можно сделать все, что нужно, с помощью этой ветви. Можно выполнить некоторые локальные тесты или слияние других ветвей в ветвь.

  8. Когда будете готовы, можно отправить новую ветвь вверх:

    [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:///USERNAME/REPOSITORY.git
    >  * [new branch]      BRANCH_NAME -> BRANCH_NAME
    
  9. Создайте новый запрос на вытягивание с помощью новой ветви.

Ошибка: не удалось отправить некоторые ссылки

Удаленное refs/pull/ пространство имен доступно только для чтения. При попытке отправить туда фиксации вы увидите следующую ошибку:

! [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'

Совет. Когда вы удаляете или переименовываете удаленную ссылку, ваше локальное пространство имен refs/pull/origin/ не будет затронуто вызовами git-remote.