Введение
Вы можете создавать наборы правил для управления взаимодействием пользователей с выбранными ветвями и тегами в репозитории. Вы можете управлять тем, кто может отправлять фиксации в определенную ветвь, а также форматировать фиксации или удалять или переименовать тег. Вы также можете запретить пользователям переименовать репозитории.
Вы также можете создать наборы правил push-уведомлений для блокировки отправки в частный или внутренний репозиторий и всю сеть вилки репозитория. Наборы правил push-уведомлений позволяют блокировать отправки на основе расширений файлов, длины пути к файлам, пути к файлам и папкам и размерам файлов.
При создании набора правил можно разрешить определенным пользователям обходить правила в наборе правил.
Дополнительные сведения о наборах правил см. в разделе Сведения о наборе правил.
Для клиентов в планах GitHub Team и GitHub Enterprise можно также создавать наборы правил для репозиториев в организации. Дополнительные сведения см. в разделе Создание наборов правил для репозиториев в организации.
Использование 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не поддерживается.
Использование регулярных выражений для метаданных фиксации
При добавлении ограничений метаданных для набора правил, предназначенных для ветвей или тегов, можно использовать синтаксис регулярного выражения для определения шаблонов, которые должны совпадать с соответствующими метаданными, такими как сообщение фиксации или имя ветви или тега.
Ограничения метаданных по умолчанию не принимают шаблоны регулярных выражений. Чтобы включить эту функцию, выберите параметр "Должен соответствовать заданному ограничению шаблона regex" при создании ограничений метаданных для набора правил.
Наборы правил поддерживают синтаксис RE2. Дополнительные сведения см. в руководстве по синтаксису Google. Чтобы проверить выражения, можно использовать проверяющий элемент в regex101.com, выбрав в левой боковой панели вкус "Голанг".
По умолчанию регулярные выражения в ограничениях метаданных не учитывают несколько строк текста. Например, если у вас есть многостроочное сообщение фиксации, шаблон ^ABC будет совпадать, если первая строка сообщения начинается с ABC. Чтобы сопоставить несколько строк сообщения, запустите выражение.(?m)
Отрицательное утверждение lookahead, обозначенное ?!, не поддерживается. Однако в случаях, когда необходимо искать указанную строку, за которой не следует другую строку, можно использовать утверждение положительного внешнего вида, обозначенное ?вместе с требованием "Не должно соответствовать заданному шаблону regex".
Примечание.
Если требуется, чтобы участники входить в фиксации, это может повлиять на шаблоны регулярных выражений. Когда кто-то выключается, GitHub добавляет строку, похожую Signed-off-by: #AUTHOR-NAME <#AUTHOR-EMAIL> на сообщение фиксации. Дополнительные сведения см. в разделе Управление политикой утверждения фиксаций для организации.
Полезные шаблоны регулярных выражений
В следующих примерах приведены полезные шаблоны для метаданных фиксации. Чтобы использовать эти шаблоны, задайте для параметра "Должно соответствовать заданному шаблону regex".
Обеспечение совместимости имен ветвей с Windows
Вы можете использовать следующий шаблон, чтобы имена ветвей включали только цифры, строчные буквы и символы - и _. Это гарантирует, что имена ветвей совместимы с операционными системами, которые по умолчанию не используют файловые системы с учетом регистра.
\A[0-9a-z-_]$
\A[0-9a-z-_]$
Спички: my-branch
Не соответствует: myBranch
Убедитесь, что имена тегов используют семантическое управление версиями
Для обеспечения соответствия имен тегов семантической версии можно использовать следующий шаблон. Дополнительные сведения см. в документации по semver.org.
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
Совпадения: 1.2.3, 10.20.30``1.1.2-prerelease+meta
Не соответствует: 1.2, 1.2-SNAPSHOT
Ограничение длины строк в сообщениях фиксации
Книга Pro Git рекомендует ограничить первую строку сообщения фиксации примерно на 50 символов.
Чтобы убедиться, что первая строка в сообщении фиксации содержит 50 символов или меньше.
\A.{1,50}$
\A.{1,50}$
Убедитесь, что сообщения фиксации начинаются с номера разрешения и проблемы
Чтобы убедиться, что сообщения фиксации содержат слово Resolves: или Fixes:строку, например #1234, можно использовать следующий шаблон.
^(Resolves|Fixes): \#[0-9]+$
^(Resolves|Fixes): \#[0-9]+$
Спички: Fixes: #1234
Не соответствует: Add conditional logic to foo.bar
Применение обычных фиксаций
Чтобы убедиться, что сообщения фиксации соответствуют спецификации обычных фиксаций, можно использовать следующий шаблон. Дополнительные сведения см. в conventionalcommits.org.
^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\w\-\.]+\))?(!)?: ([\w ])+([\s\S]*)
^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\w\-\.]+\))?(!)?: ([\w ])+([\s\S]*)
Спички: feat: allow provided config object to extend other configs
Не соответствует: Add conditional logic to foo.bar
Использование состояний применения набора правил
При создании или изменении набора правил можно использовать состояния принудительного применения, чтобы настроить применение набора правил.
Для набора правил можно выбрать любое из следующих состояний принудительного применения.
-
**<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-play" aria-label="play" role="img"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg> Активный:** набор правил будет применяться при создании. -
**<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-meter" aria-label="meter" role="img"><path d="M8 1.5a6.5 6.5 0 1 0 6.016 4.035.75.75 0 0 1 1.388-.57 8 8 0 1 1-4.37-4.37.75.75 0 1 1-.569 1.389A6.473 6.473 0 0 0 8 1.5Zm6.28.22a.75.75 0 0 1 0 1.06l-4.063 4.064a2.5 2.5 0 1 1-1.06-1.06L13.22 1.72a.75.75 0 0 1 1.06 0ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0Z"></path></svg> Оцените:** набор правил не будет применяться, но вы сможете отслеживать, какие действия будут или не нарушать правила на странице "Аналитика правил". -
**<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-skip" aria-label="skip" role="img"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm9.78-2.22-5.5 5.5a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l5.5-5.5a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg> Отключен:** набор правил не будет применяться или вычисляется.
Использование режима "Оценка" — отличный вариант для тестирования набора правил, не применяя его. Вы можете использовать страницу "Аналитика правил", чтобы узнать, нарушил ли вклад правило.
Создание набора правил ветви или тега
-
На 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-уведомлений и дальнейшие действия
Чтобы завершить создание набора правил, нажмите кнопку "Создать". Если для набора правил задано значение "Активный", набор правил немедленно вступает в силу.
Вы можете просмотреть аналитические сведения о наборе правил, чтобы узнать, как правила влияют на участников. Если для параметра "Оценка" задано состояние принудительного применения, можно увидеть, какие действия прошли или завершились ошибкой, если набор правил был активным. Дополнительные сведения о аналитике для наборов правил см. в разделе Управление наборами правил для репозитория.