Skip to main content

Управление правилом защиты ветвей

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

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

People with admin permissions or a custom role with the "edit repository rules" permission to a repository can manage branch protection rules.

Защищенные ветви доступны в общедоступных репозиториях с GitHub Free и GitHub Free для организаций. Защищенные ветви также доступны в общедоступных и частных репозиториях с GitHub Pro, GitHub Team, GitHub Enterprise Cloudи GitHub Enterprise Server.

Сведения о правилах защиты ветвей

Для определенной ветви, всех ветвей или любой ветви, которая соответствует шаблону имени, заданному с помощью синтаксиса fnmatch, можно создать правило защиты ветви в репозитории. Например, чтобы защитить все ветви, содержащие слово release, можно создать правило ветви для *release*.

Вы можете создать правило для всех текущих и будущих ветвей в репозитории, используя синтаксис с подстановочным знаком *. Так как GitHub использует File::FNM_PATHNAME флаг синтаксисаFile.fnmatch, дикий * карта не соответствует разделителям каталогов (/). Например, будет соответствовать всем ветвям, qa/* начинающимся с qa/ и содержащим одну косую черту, но не совпадать qa/foo/bar. Вы можете включить любое количество косых черт после qa qa/**/*, которое будет соответствовать, например qa/foo/bar/foobar/hello-world. Можно также расширить qa строку, qa**/**/* чтобы сделать правило более инклюзивным.

Дополнительные сведения о параметрах синтаксиса см. в документации по fnmatch.

Примечание. Не все выражения из синтаксиса fnmatch поддерживаются в правилах защиты ветви. Обратите внимание на следующие ограничения:

  • Символ обратной косой черты (\) нельзя использовать в качестве символа кавыка, так как GitHub не поддерживает использование обратной косой черты в правилах защиты ветви.
  • Можно указать наборы символов в квадратных скобках ([]), но в настоящее время нельзя дополнить набор оператором ^ (например, [^charset]).
  • Хотя GitHub поддерживается File::FNM_PATHNAME в fnmatch синтаксисе, File::FNM_EXTGLOB не поддерживается.

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

Правила защиты ветвей, в которых используется специальный символ, например *, ? или ], применяются в порядке их создания, поэтому более старые правила с этими символами имеют более высокий приоритет.

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

Дополнительные сведения о каждом из доступных параметров защиты ветви см. в разделе "Сведения о защищенных ветвях".

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

Создание правила защиты ветвей

При создании правила защиты ветвей не обязательно, чтобы указанная ветвь уже существовала в репозитории.

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

  1. На GitHubперейдите на главную страницу репозитория.

  2. Под именем репозитория щелкните Параметры. Если вкладка "Параметры" не отображается, выберите раскрывающееся меню и щелкните Параметры.

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

  3. В разделе "Код и автоматизация" боковой панели щелкните Branchs.

  4. Рядом с разделом "Правила защиты ветви" нажмите кнопку "Добавить правило".

  5. В разделе "Шаблон имени ветви" введите имя ветви или шаблон, которые требуется защитить.

  6. При необходимости включите требуемые запросы на вытягивание.

    Note

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

    Кроме того, при использовании этих параметров утверждения проверки будут отклонены как устаревшие, если база слияния вводит новые изменения после отправки проверки. База слияния — это фиксация, которая является последним общим предком между ветвью раздела и базовая ветвь. Если база слиянием изменяется, запрос на вытягивание не может быть объединен до тех пор, пока кто-то не утвердит работу снова.

    • В разделе "Защита соответствующих ветвей" выберите Требовать запрос на вытягивание перед слиянием.

    • При необходимости, чтобы требовать утверждения перед объединением запроса на вытягивание, выберите " Требовать утверждения".

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

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

    • Если необходимо требовать проверку владельцем кода в случае, если запрос на вытягивание влияет на код с назначенным владельцем, выберите параметр Требовать проверку владельцами кода. Обратите внимание, что если код имеет несколько владельцев, утверждение от любого из владелец кода будет достаточно для удовлетворения этого требования. Дополнительные сведения см. в разделе О владельцах кода.

    • При необходимости, чтобы разрешить определенным субъектам отправлять код в ветвь, не создавая запросы на вытягивание, когда это требуется, выберите Разрешить определенным субъектам пропускать создание запросов на вытягивание. Затем найдите и выберите субъекты, которым необходимо разрешить пропускать создание запроса на вытягивание.

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

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

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

    • Выберите параметр Требовать прохождения проверок состояния перед слиянием.
    • Чтобы запросы на вытягивание обязательно тестировались с использованием последнего кода в защищенной ветви, выберите параметр Требовать актуальности ветвей перед слиянием.
    • В поле поиска найдите проверки состояния, выбрав нужные проверки.
  8. При необходимости выберите параметр Требовать устранения разногласий перед слиянием.

  9. При необходимости выберите параметр Требовать подписания фиксаций.

  10. При необходимости выберите параметр Требовать линейной истории.

  11. Если необходимо выбрать среды, в которых изменения должны быть успешно развернуты перед слиянием, выберите параметр Требовать успешного развертывания перед слиянием, а затем выберите среды.

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

    • Выберите "Блокировка ветви".
    • При необходимости, чтобы разрешить синхронизацию вилок, выберите "Разрешить синхронизацию вилок".
  13. При необходимости выберите "Не разрешать обход указанных выше параметров".

  14. При необходимости включите ограничение к ветви.

    • Выберите параметр Ограничить пользователей, которые могут выполнять отправку в соответствующие ветви.
    • При необходимости, чтобы также ограничить создание соответствующих ветвей, выберите Ограничить отправки, создающие соответствующие ветви.
    • В поле поиска найдите и выберите людей, команды или приложения, которые будут иметь разрешение на отправку защищенная ветвь или создать соответствующую ветвь.
  15. При необходимости в разделе "Правила, применяемые ко всем, включая администраторов" выберите параметр Разрешить принудительную отправку.

    Затем выберите, кто может принудительная отправка в ветвь.

    • Выберите вариант Все, чтобы разрешить всем, у кого есть по крайней мере разрешения на запись в репозиторий, включая администраторов, выполнять принудительную отправку в ветвь.
    • Выберите Указать, кто может выполнять принудительную отправку, чтобы разрешить выполнять принудительную отправку в ветвь только определенным субъектам. Затем найдите и выберите эти субъекты.

    Дополнительные сведения о принудительная отправка см. в разделе "Сведения о защищенных ветвях".

  16. При необходимости выберите параметр Разрешить удаление.

  17. Нажмите кнопку Создать.

Изменение правила защиты ветвей

  1. На GitHubперейдите на главную страницу репозитория.

  2. Под именем репозитория щелкните Параметры. Если вкладка "Параметры" не отображается, выберите раскрывающееся меню и щелкните Параметры.

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

  3. В разделе "Код и автоматизация" боковой панели щелкните Branchs.

  4. Справа от правила защиты ветвей, которое нужно изменить, щелкните Изменить.

  5. Внесите необходимые изменения в правило защиты ветвей.

  6. Нажмите кнопку Сохранить изменения.

Удаление правила защиты ветвей

  1. На GitHubперейдите на главную страницу репозитория.

  2. Под именем репозитория щелкните Параметры. Если вкладка "Параметры" не отображается, выберите раскрывающееся меню и щелкните Параметры.

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

  3. В разделе "Код и автоматизация" боковой панели щелкните Branchs.

  4. Справа от правила защиты ветвей, которое нужно удалить, щелкните Удалить.