Skip to main content

Слияние запроса на вытягивание

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

Tool navigation

Сведения о слиянии запросов на вытягивание

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

В качестве альтернативы правилам защиты ветви, можно создавать наборы правил. Наборы правил имеют несколько преимуществ по сравнению с правилами защиты branch защиты, такими как состояния и улучшенная возможность обнаружения, не требуя доступа администратора. Вы также можете применять несколько наборов правил одновременно. Дополнительные сведения см. в разделе «Сведения о наборе правил».

Вы можете настроить запрос на вытягивание для автоматического объединения при соблюдении всех требований к объединению. Дополнительные сведения см. в разделе Автоматическое слияние запроса на вытягивание.

Если в запросе на вытягивание есть конфликты слияния или если вы хотите протестировать изменения перед слиянием, можно проверить запрос на вытягивание локально и выполнить для него слияние с помощью командной строки.

Нельзя выполнить слияние для черновика запроса на вытягивание. Дополнительные сведения о запросах на вытягивание черновика см. в разделе Сведения о запросах на вытягивание.

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

Note

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

Слияние для запросов на вытягивание выполняется с помощью --no-ffпараметра, за исключением запросов на вытягивание со сжатыми или перемещенными фиксациями, для которых выполняется слияние с помощью параметра быстрого переадресации.

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

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

Слияние запроса на вытягивание

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

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

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

  3. Прокрутите вниз до нижней части запроса на вытягивание. В зависимости от параметров слияния, включенных для репозитория, можно:

    Note

    Повторная база и слияние всегда обновляют сведения о фиксации и создают новые shas фиксации. Дополнительные сведения см. в разделе "Сведения о слиянии запросов на вытягивание".

  4. При появлении запроса введите сообщение о фиксации или примите сообщение по умолчанию.

    Сведения о сообщениях фиксации по умолчанию для слияний скваша см. в разделе "Сведения о слиянии запросов на вытягивание".

  5. Если у вас несколько адресов электронной почты, связанных с учетной записью в GitHub, щелкните раскрывающееся меню адреса электронной почты и выберите адрес электронной почты, используемый в качестве адреса электронной почты автора Git. В этом раскрывающемся меню отображаются только проверенные адреса электронной почты. Если вы включили конфиденциальность адресов электронной почты, то ответ не будет по умолчанию автор фиксации адреса электронной почты. Дополнительные сведения о точной форме, которую может принимать адрес электронной почты без ответа, см. в разделе "Указание адреса электронной почты для фиксаций".

    Снимок экрана: запрос на извлечение GitHub с раскрывающимся меню с параметрами выбора адреса электронной почты автор фиксации. octocat@github.com выбран.

    Note

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

  6. Щелкните Подтвердить слияние, Подтвердить слияние со сжатием или Подтвердить перемещение и слияние.

  7. При необходимости удалите ветвь. Это позволяет сохранить список ветвей в репозитории чистым.

Note

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

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

gh pr merge PULL-REQUEST

Следуйте интерактивным указаниям, чтобы завершить слияние. Дополнительные сведения о методах слияния, которые можно выбрать, см. в разделе Сведения о слиянии запросов на вытягивание.

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

gh pr merge 523 --squash --body "my squash commit" --delete-branch

Дополнительные материалы