Skip to main content

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

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

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

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

Platform navigation

Tool navigation

Note

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

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

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

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

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

  3. В поле слияния щелкните инструкции по командной строке. Выполните последовательность действий, чтобы закрыть предлагаемый запрос на вытягивание.

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

  4. Кроме того, чтобы просмотреть предлагаемые изменения в GitHub Desktop, рядом с кнопкой "Объединить запрос на вытягивание", нажмите кнопку GitHub Desktop.

    Снимок экрана: раздел "Сообщения слияния" на странице запроса на вытягивание. Ссылка, помеченная как "Открыть это в GitHub Desktop", описывается оранжевым цветом.

Note

Дополнительные сведения о 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://HOSTNAME/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'

Tip

При удалении или переименовании удаленной ссылки локальные refs/pull/origin/ пространства имен не будут затронуты вызовами git-remote.