Введение
Вы можете создавать наборы правил для управления взаимодействием пользователей с выбранными ветвями и тегами в репозитории. Вы можете управлять тем, кто может отправлять фиксации в определенную ветвь, а также форматировать фиксации или удалять или переименовать тег. Вы также можете запретить пользователям переименовать репозитории.
Вы также можете создать наборы правил push-уведомлений для блокировки отправки в частный или внутренний репозиторий и всю сеть вилки репозитория. Наборы правил push-уведомлений позволяют блокировать отправки на основе расширений файлов, длины пути к файлам, пути к файлам и папкам и размерам файлов.
При создании набора правил можно разрешить определенным пользователям обходить правила в наборе правил.
Дополнительные сведения о наборах правил см. в разделе Сведения о наборе правил.
Для клиентов в планах GitHub Team и GitHub Enterprise можно также создавать наборы правил для репозиториев в организации. Дополнительные сведения см. в разделе Создание наборов правил для репозиториев в организации.
Импорт предварительно созданных наборов правил
Чтобы импортировать один из предварительно созданных наборов правил на GitHub, см. раздел github/ruleset-recipes.
Существующий набор правил можно импортировать с помощью JSON-файла. Это может быть полезно, если вы хотите применить один и тот же набор правил к нескольким репозиториям или организациям. Дополнительные сведения см. в разделе Управление наборами правил для репозиториев в организации.
Использование fnmatch синтаксиса
Вы можете использовать fnmatch синтаксис для определения шаблонов, предназначенных для создания набора правил.
Подстановочный знак можно использовать * для сопоставления любой строки символов. Так как GitHub использует File::FNM_PATHNAME флаг для синтаксиса File.fnmatch , * подстановочный знак не соответствует разделителям каталогов (/). Например, будет соответствовать всем ветвям, qa/* начинающимся с qa/ и содержащим одну косую черту, но не совпадать qa/foo/bar. Вы можете включить любое количество косых черт после qa qa/**/*, которое будет соответствовать, например qa/foo/bar/foobar/hello-world. Можно также расширить qa строку, qa**/**/* чтобы сделать правило более инклюзивным.
Дополнительные сведения о параметрах синтаксиса см. в документации по fnmatch.
Неподдерживаемый fnmatch синтаксис
Не все выражения из синтаксиса fnmatch поддерживаются в правилах защиты ветви. Обратите внимание на следующие ограничения:
- Символ обратной косой черты (
\) нельзя использовать в качестве символа кавыка, так как GitHub не поддерживает использование обратной косой черты в правилах защиты ветви. - Можно указать наборы символов в квадратных скобках (
[]), но в настоящее время нельзя дополнить набор оператором^(например,[^charset]). - Хотя GitHub поддерживается
File::FNM_PATHNAMEвfnmatchсинтаксисе,File::FNM_EXTGLOBне поддерживается.
Использование состояний применения набора правил
При создании или изменении набора правил можно использовать состояния принудительного применения, чтобы настроить применение набора правил.
Для набора правил можно выбрать любое из следующих состояний принудительного применения.
- Активный: набор правил будет применяться при создании.
- Отключен: набор правил не будет применяться.
Создание набора правил ветви или тега
-
На GitHubперейдите на главную страницу репозитория.
-
Под именем репозитория щелкните Settings. Если вкладка "Параметры" не отображается, выберите раскрывающееся меню и нажмите кнопку "Параметры".

-
В левой боковой панели в разделе "Код и автоматизация" щелкните "Правила", а затем щелкните "Наборы правил".

-
Нажмите кнопку "Создать набор правил".
-
Чтобы создать набор правил, предназначенный для ветвей, щелкните новый набор правил ветви. Кроме того, чтобы создать набор правил, предназначенный для тегов, щелкните "Создать набор правил тегов".
-
В поле "Имя набора правил" введите имя набора правил.
-
При необходимости, чтобы изменить состояние принудительного применения по умолчанию, щелкните Отключен и выберите состояние принудительного применения.
Предоставление разрешений обхода для набора правил ветви или тега
данных repositories.repositories.rulesets-bypass-step %} 1. При необходимости, чтобы предоставить субъекту обход, не позволяя им отправлять непосредственно в репозиторий, справа от "Всегда разрешать", щелкните октикона "kebab-horizontal" aria-label="View logs" %}, а затем нажмите кнопку "Для запросов на вытягивание".
Выбранный субъект теперь необходим для открытия запроса на вытягивание, чтобы внести изменения в репозиторий, создав четкий след их изменений в запросе на вытягивание и журнал аудита. Затем субъект может обойти любые защиты ветви и объединить запрос на вытягивание.
Выбор ветвей или тегов для целевого объекта
Чтобы выбрать целевые ветви или теги, в разделе "Целевые ветви" или "Целевые теги" выберите "Добавить целевой объект", а затем выберите способ включения или исключения ветвей или тегов. Синтаксис можно использовать fnmatch для включения или исключения ветвей или тегов на основе шаблона. Дополнительные сведения см. в разделе "Использование fnmatch синтаксиса".
В один набор правил можно добавить несколько критериев целевого назначения. Например, можно включить ветвь по умолчанию, включить любые ветви, соответствующие шаблону*feature*, а затем исключить ветвь, соответствующую шаблонуnot-a-feature.
Выбор ветвей или защиты тегов
В разделе "Защита ветви" или "Защита тегов" выберите правила, которые необходимо включить в набор правил. При выборе правила вы можете ввести дополнительные параметры для правила. Дополнительные сведения о правилах см. в разделе Доступные правила для наборов правил.
Примечание.
Если вы выберете "Требовать проверки состояния перед слиянием", в разделе "Дополнительные параметры":
- Вы можете ввести имя каждой проверки состояния, для которых требуется. Чтобы завершить добавление проверки состояния в качестве требования, необходимо щелкнуть .
- Если вы выберете "Требовать, чтобы ветви были актуальными перед слиянием", необходимо определить проверку, чтобы защита вступить в силу.
Добавление ограничений метаданных
Ограничения метаданных должны быть направлены на повышение согласованности между фиксациями в репозитории. Они не предназначены для замены таких мер безопасности, как требование проверки кода с помощью запросов на вытягивание.
Примечание.
При слиянии ветви все фиксации в этой ветви должны соответствовать любым требованиям к метаданным для базовая ветвь.
При использовании анкеров конца строки в регулярных выражениях используйте \n?$ вместо $ одиночного использования. Опциональный \n? вариант совпадает с последующей новой строкой, которая может присутствовать в потоках Git push/CLI, при этом работая для коммитов, созданных через веб-интерфейс и API.
-
Чтобы добавить правило для управления метаданными фиксации или именами ветвей, в разделе "Ограничения" при создании или изменении набора правил нажмите кнопку "Ограничить метаданные фиксации" или "Ограничить имена ветвей".
-
Настройте параметры ограничения, а затем нажмите кнопку "Добавить". В один набор правил можно добавить несколько ограничений.
-
Чтобы соответствовать заданному шаблону регулярных выражений, в раскрывающемся списке "Требование" выберите "Должен соответствовать заданному шаблону regex".
Для большинства требований, таких как "Должен начинаться с соответствующего шаблона", вводимый шаблон интерпретируется буквально, и подстановочные знаки не поддерживаются. Например,
*символ представляет только литеральный*символ.Для более сложных шаблонов можно выбрать "Должен соответствовать заданному шаблону regex" или "Не должен соответствовать заданному шаблону regex", а затем использовать синтаксис регулярных выражений для определения соответствующего шаблона. Дополнительные сведения см. в разделе "Сведения о регулярных выражениях для метаданных фиксации" в документации GitHub Enterprise Cloud. % else %}.
Любой пользователь, просматривающий наборы правил для репозитория, сможет просмотреть предоставленное описание.
-
При необходимости перед принятием набора правил с ограничениями метаданных выберите состояние принудительного применения для набора правил, чтобы проверить последствия любых ограничений метаданных без влияния участников. Дополнительные сведения об ограничениях метаданных см. в разделе Доступные правила для наборов правил.
Завершение набора правил ветви или тега и дальнейшие действия
Чтобы завершить создание набора правил, нажмите кнопку "Создать". Если для набора правил задано значение "Активный", набор правил немедленно вступает в силу.
Создание набора правил push-уведомлений
Примечание.
Этот набор правил будет en принудительная отправка ограничения для всей сети вилки репозитория.
Вы можете создать набор правил push-уведомлений для частных или внутренних репозиториев.
-
На GitHubперейдите на главную страницу репозитория.
-
Под именем репозитория щелкните Settings. Если вкладка "Параметры" не отображается, выберите раскрывающееся меню и нажмите кнопку "Параметры".

-
В левой боковой панели в разделе "Код и автоматизация" щелкните "Правила", а затем щелкните "Наборы правил".

-
Нажмите кнопку "Создать набор правил".
-
Чтобы создать набор правил, предназначенный для ветвей, нажмите кнопку Создать набор правил push-уведомлений.
-
В поле "Имя набора правил" введите имя набора правил.
-
При необходимости, чтобы изменить состояние принудительного применения по умолчанию, щелкните Отключен и выберите состояние принудительного применения.
Предоставление разрешений обхода для набора правил push-уведомлений
Примечание.
Обход разрешений для наборов правил push-уведомлений в этом репозитории будет унаследован всей сетью вилки для этого репозитория. Это означает, что единственными пользователями, которые могут обойти этот набор правил для любого репозитория в всей сети вилки этого репозитория, являются пользователи, которые могут обойти этот набор правил в корневом репозитории.
данных repositories.repositories.rulesets-bypass-step %}
Выбор защиты push-уведомлений
Вы можете блокировать отправки в этот репозиторий и всю сеть вилки этого репозитория на основе расширений файлов, длины пути к файлам, пути к файлам и папкам, а также размеров файлов.
Все настроенные push-защиты блокируют отправки в этом репозитории и вся сеть вилки этого репозитория.
-
В разделе "Защита от отправки" щелкните ограничения, которые вы хотите применить. Затем укажите сведения о выбранном ограничении.
Для ограничений пути к файлу можно использовать частичные или полные пути. Для этого можно использовать
fnmatchсинтаксис. Например, ограничение, предназначенное дляtest/demo/**/*предотвращения отправки в файлы или папки вtest/demo/каталоге. Ограничение, предназначенное дляtest/docs/pushrules.mdпредотвращения отправкиpushrules.mdв файл в каталогеtest/docs/. Дополнительные сведения см. в разделе Создание наборов правил для репозитория.
Завершение набора правил push-уведомлений и дальнейшие действия
Чтобы завершить создание набора правил, нажмите кнопку "Создать". Если для набора правил задано значение "Активный", набор правил немедленно вступает в силу.