Skip to main content

Erstellen von Regelsätzen für ein Repository

Du kannst einem Repository Regelsätze hinzufügen, um zu steuern, wie Benutzer*innen mit bestimmten Branches und Tags interagieren können.

Wer kann dieses Feature verwenden?

Alle Personen mit Lesezugriff auf ein Repository können die Regelsätze des Repositorys anzeigen. Personen mit Administratorzugriff auf ein Repository oder mit einer benutzerdefinierten Rolle mit der Berechtigung „Repositoryregeln bearbeiten“, können Regelsätze für ein Repository erstellen, bearbeiten und löschen sowie Erkenntnisse zu Regelsätzen anzeigen. Weitere Informationen findest du unter Informationen zu benutzerdefinierten Repositoryrollen.

Regelsätze sind verfügbar in öffentlichen Repositorys mit GitHub Free und GitHub Free für Organisationen, und in öffentlichen und privaten Repositorys mit GitHub Pro, GitHub Team und GitHub Enterprise Cloud.

Einführung

Du kannst Regelsätze erstellen, um zu steuern, wie Benutzerinnen mit ausgewählten Branches und Tags in einem Repository interagieren können. Du kannst beispielsweise steuern, wer Commits an einen bestimmten Branch pushen kann, wie diese Commits formatiert werden müssen oder wer ein Tag löschen oder umbenennen kann. Du kannst auch verhindern, dass Benutzerinnen Repositorys umbenennen.

Wenn du einen Regelsatz erstellst, kannst du bestimmten Benutzer*innen erlauben, die Regeln darin zu umgehen.

Weitere Informationen zu den Regelsätzen findest du unter "Informationen zu Regelsätzen".

Sie können auch Regelsätze für alle Repositorys in einer Organisation erstellen. Weitere Informationen finden Sie unter Erstellen von Regelsätzen für Repositorys in deiner Organisation.

Verwenden der fnmatch-Syntax

Sie können die Syntax fnmatch verwenden, um Muster zu definieren, die beim Erstellen eines Regelsatzes als Ziel verwendet werden sollen.

Mit dem Platzhalter * kannst du nach einer beliebigen Zeichenfolge suchen. Da GitHub das Flag File::FNM_PATHNAME für die Syntax File.fnmatch verwendet, entspricht das Platzhalterzeichen * nicht den Verzeichnistrennzeichen (/). qa/* entspricht z. B. allen Branches, die mit qa/ beginnen und einen einzelnen Schrägstrich enthalten, aber nicht qa/foo/bar. Nach qa kann mit qa/**/* eine beliebige Anzahl von Schrägstrichen eingeschlossen werden, um z. B. qa/foo/bar/foobar/hello-world zu entsprechen. Du kannst mit qa**/**/* auch die Zeichenfolge qa erweitern, um die Regel auszudehnen.

Weitere Informationen zu Syntaxoptionen findest du in der Dokumentation zu fnmatch.

Nicht unterstützte fnmatch-Syntax

Nicht alle Ausdrücke aus der fnmatch-Syntax werden in Branchschutzregeln unterstützt. Beachten Sie die folgenden Beschränkungen:

  • Sie können den umgekehrten Schrägstrich (\) nicht als Quotierungszeichen verwenden, da GitHub die Verwendung von umgekehrten Schrägstrichen in Verzweigungsschutzregeln nicht unterstützt.
  • Sie können Zeichensätze in eckigen Klammern ([]) angeben, aber derzeit keinen Satz mit dem Operator ^ ergänzen (z. B. [^charset]).
  • GitHub unterstützt zwar File::FNM_PATHNAME in der fnmatch-Syntax, aber nicht File::FNM_EXTGLOB.

Verwenden regulärer Ausdrücke für Commitmetadaten

Wenn du Metadateneinschränkungen für einen Regelsatz hinzufügen, der auf Verzweigungen oder Tags abzielt, können Sie die Syntax für reguläre Ausdrücke verwenden, um Muster zu definieren, mit denen die relevanten Metadaten, z. B. die Commit-Nachricht oder der Branch- oder Tag-Name, übereinstimmen müssen oder nicht übereinstimmen dürfen.

Metadateneinschränkungen akzeptieren standardmäßig keine regex-Muster. Um dies zu aktivieren, wählen Sie beim Erstellen der Metadaten-Einschränkungen für den Regelsatz die Einschränkung Muss mit einem bestimmten regex-Muster übereinstimmen aus.

Regelsätze unterstützen die RE2-Syntax. Weitere Informationen findest du im Syntaxleitfaden von Google. Zur Überprüfung deiner Ausdrücke kannst du die Validierung auf regex101.com verwenden und in der linken Randleiste die Variante „Golang“ auswählen.

Standardmäßig berücksichtigen reguläre Ausdrücke in Metadateneinschränkungen keine mehrzeiligen Texte. Wenn du beispielsweise über eine mehrzeilige Commitnachricht verfügst, führt das Muster ^ABC zu einer Übereinstimmung, wenn eine Zeile in der Nachricht mit ABC beginnt. Um mehrere Zeilen der Nachricht abzugleichen, beginne deinen Ausdruck mit (?m).

Die negative Lookaheadassertion, die als ?! bezeichnet wird, wird nicht unterstützt. In Fällen, in denen du nach einer bestimmten Zeichenfolge suchen musst, auf die keine andere bestimmte Zeichenfolge folgt, kannst du aber die positive Lookaheadassertion (als ? bezeichnet) in Kombination mit der Anforderung „Darf nicht mit einem bestimmten Regex-Muster übereinstimmen“ verwenden.

Note

Wenn Mitwirkende Commits signieren müssen, kann dies deine Muster für reguläre Ausdrücke beeinträchtigen. Beim Abzeichnen fügt GitHub der Commitnachricht eine Zeichenfolge wie Signed-off-by: #AUTHOR-NAME <#AUTHOR-EMAIL> hinzu. Weitere Informationen findest du unter Verwalten der Richtlinie für das Abzeichnen von Commits für deine Organisation.

Nützliche Muster für reguläre Ausdrücke

Die folgenden Beispiele enthalten nützliche Muster für Commitmetadaten. Um diese Muster zu verwenden, lege Anforderung auf „Muss einem bestimmten RegEx-Muster entsprechen“ fest.

Sicherstellen, dass Branchnamen mit Windows kompatibel sind

Du kannst mit dem folgenden Muster sicherstellen, dass Branchnamen nur Zahlen, Kleinbuchstaben und die Zeichen - und _ enthalten. Dadurch wird sichergestellt, dass Branchnamen mit Betriebssystemen kompatibel sind, bei denen standardmäßig keine Dateisysteme mit Beachtung der Groß-/Kleinschreibung verwendet werden.

Text
\A[0-9a-z-_]$

Entspricht: my-branch

Entspricht nicht: myBranch

Sicherstellen, dass Tagnamen semantische Versionsverwaltung verwenden

Mit dem folgenden Muster kannst du sicherstellen, dass Tagnamen der semantischen Versionsverwaltung entsprechen. Weitere Informationen findest du in der Dokumentation auf semver.org.

Text
^(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-]+)*))?$

Entspricht: 1.2.3, 10.20.30, 1.1.2-prerelease+meta

Entspricht nicht: 1.2, 1.2-SNAPSHOT

Begrenzen der Länge von Zeilen in Commitnachrichten

Im Pro Git-Buch wird empfohlen, die erste Zeile einer Commitnachricht auf etwa 50 Zeichen zu beschränken.

Mit dem folgenden Muster kannst du sicherstellen, dass die erste Zeile in einer Commitnachricht maximal 50 Zeichen enthält.

Text
\A.{1,50}$
Sicherstellen, dass Commitnachrichten mit einer Lösungs- und Problemnummer beginnen

Mit dem folgenden Muster kannst du sicherstellen, dass Commitnachrichten das Wort Resolves: oder Fixes: enthalten, gefolgt von einer Zeichenfolge wie #1234.

Text
^(Resolves|Fixes): \#[0-9]+$

Entspricht: Fixes: #1234

Entspricht nicht: Add conditional logic to foo.bar

Erzwingen konventioneller Commits

Mit dem folgenden Muster kannst du sicherstellen, dass Commitnachrichten der Spezifikation für konventionelle Commits entsprechen. Weitere Informationen findest du unter conventionalcommits.org.

Text
^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\w\-\.]+\))?(!)?: ([\w ])+([\s\S]*)

Entspricht: feat: allow provided config object to extend other configs

Entspricht nicht: Add conditional logic to foo.bar

Verwenden von Regelsatz-Erzwingungsstatus

Beim Erstellen oder Bearbeiten Ihres Regelsatzes können Sie Erzwingungsstatus verwenden, um zu konfigurieren, wie Ihr Regelsatz erzwungen wird.

Sie können einen der folgenden Erzwingungsstatus für Ihr Regelsatz auswählen.

  • Active: Dein Regelsatz wird beim Erstellen erzwungen.
  • Evaluate: Dein Regelsatz wird nicht erzwungen, doch du kannst überwachen auf der Seite „Rule Insights“ überwachen, welche Aktionen die Regeln verletzen würden.
  • Disabled: Dein Regelsatz wird nicht erzwungen oder ausgewertet.

Die Verwendung des Modus „Auswerten“ ist eine hervorragende Option zum Testen des Regelsets, ohne es zu erzwingen. Sie können die Seite „Regeleinblicke“ verwenden, um festzustellen, ob der Beitrag gegen die Regel verstoßen hätte. Weitere Informationen findest du unter Verwalten von Regelsätzen für ein Repository.

Erstellen eines Verzweigungs- oder Tagregelsatzes

  1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.

  2. Wähle unter dem Namen deines Repositorys die Option Einstellungen aus. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

    Screenshot eines Repositoryheaders mit den Registerkarten. Die Registerkarte „Einstellungen“ ist dunkelorange umrandet.

  3. Klicke auf der linken Randleiste unter „Code und Automatisierung“ auf Regeln und dann auf Regelsätze.

    Screenshot: Randleiste der Seite „Einstellungen“ für ein Repository Das Untermenü „Regeln“ ist erweitert, und die Option „Regelsätze“ ist orange umrandet.

  4. Du kannst einen Regelsatz für Branches oder für Tags erstellen.

    • Klicke auf Neuer Regelsatz für Branches, um einen Regelsatz für Branches zu erstellen.

    • Klicke auf und dann auf Neuer Regelsatz für Tags, um einen Regelsatz für Tags zu erstellen.

      Screenshot: Seite „Regelsätze“. Im erweiterten Dropdownmenü neben der Schaltfläche „Neuer Regelsatz für Branches“ befindet sich die orange umrandete Option „Neuer Regelsatz für Tags“.

  5. Geben Sie unter „Regelsatzname“ einen Namen für den Regelsatz ein.

  6. Um den standardmäßigen Durchsetzungsstatus zu ändern, klicken Sie auf Deaktiviert und wählen Sie einen Durchsetzungsstatus aus. Weitere Informationen zu Erzwingstatus finden Sie unter „Informationen zu Regelsätzen.“

Gewähren von Umgehungsberechtigungen für Ihre Verzweigungs- oder Ihren Tag-Regelsatz

Sie können bestimmten Rollen, Teams oder Apps Umgehungsberechtigungen für Ihren Regelsatz zu genehmigen, gewähren. Für folgende Elemente kann Umgehungszugriff eingerichtet werden:

  • Repositoryadministratoren, Organisationsbesitzer und Unternehmensbesitzer
  • Die Rolle verwalten oder schreiben oder benutzerdefinierte Repository-Rollen basierend auf der Schreibrolle
  • Teams
  • GitHub Apps
  • Dependabot. Weitere Informationen zu Dependabot finden Sie unter „Schnellstartanleitung für Dependabot“.
  1. Um Umgehungsberechtigungen für das Regelsatz zu erteilen, klicken Sie im Abschnitt „Umgehungsliste“ auf Umgehung hinzufügen.

  2. Suchen Sie im angezeigten modalen Dialogfeld „Umgehung hinzufügen“ nach der Rolle, dem Team oder der Anwendung, für die Sie Umgehungsberechtigungen erteilen möchten, wählen Sie dann die Rolle, das Team oder die Anwendung aus dem Abschnitt „Vorschläge“ aus und klicken Sie auf Ausgewählte hinzufügen.

  3. Optional klicken Sie rechts von „Immer Zulassen“ auf und dann auf Nur für Pull-Requests, um eine Überbrückung an einen Akteur zu gewähren, ohne sie direkt an ein Repository zu übertragen.

    Der ausgewählte Akteur ist jetzt aufgefordert, eine Pull-Anforderung zu öffnen, um Änderungen an einem Repository vorzunehmen und eine klare Spur ihrer Änderungen im Pull Request und Überwachungsprotokoll zu erstellen. Die Akteur*innen können dann alle Schutzmechanismen für den Branch umgehen und diesen Pull Request mergen.

Auswählen, welche Verzweigungen oder Tags als Ziel dienen sollen

Wählen Sie im Abschnitt „Ziel-Verzweigungen“ oder „Ziel-Tags“ die Option Ziel hinzufügen aus, und legen Sie dann fest, wie Sie Verzweigungen oder Tags ein- oder ausschließen möchten. Mithilfe der fnmatch-Syntax kannst du Branches oder Tags basierend auf einem Muster ein- oder ausschließen. Weitere Informationen findest du unter Verwenden der fnmatch-Syntax.

Du kannst demselben Regelsatz mehrere Ausrichtungskriterien hinzufügen. Du kannst beispielsweise den Standardbranch und alle Branches einschließen, die dem Muster *feature* entsprechen, und dann explizit einen Branch ausschließen, der dem Muster not-a-feature entspricht.

Auswählen von Verzweigungs- oder Tagschutz

Wähle im Abschnitt „Schutz von Branches“ oder „Schutz von Tags“ die Regeln aus, die im Regelsatz enthalten sein sollen. Wenn du eine Regel auswählst, kannst du möglicherweise weitere Einstellungen für die Regel eingeben. Weitere Informationen zu den Regeln findest du unter Verfügbare Regeln für Regelsätze.

Note

Wenn du im Abschnitt „Additional settings“ die Option Require status checks before merging auswählst, hast du folgende Möglichkeiten:

  • Du kannst den Namen jeder Statusüberprüfung eingeben, die du als erforderlich festlegen möchtest. Um das Hinzufügen einer Statusüberprüfung als Anforderung abzuschließen, musst du auf klicken.
  • Wenn du Erzwingen, dass Branches vor dem Mergen aktuell sein müssen auswählst, musst du eine Überprüfung definieren, damit der Schutz wirksam wird.

Metadateneinschränkungen hinzufügen

Deine Metadateneinschränkungen sollen die Konsistenz zwischen Commits in deinem Repository erhöhen. Sie sind nicht dazu bestimmt, Sicherheitsmaßnahmen wie die Anforderung eines Code Reviews über Pull Requests zu ersetzen.

Note

Wenn du einen Squashmerge für einen Branch ausführst, müssen alle Commits in diesem Branch alle Metadatenanforderungen für den Basisbranch erfüllen.

  1. Um eine Regel zum Steuern von Commit-Metadaten oder Branchnamen hinzuzufügen, klicke beim Erstellen oder Bearbeiten eines Regelsatzes im Abschnitt „Restrictions“ auf Restrict commit metadata oder auf Restrict branch names.

  2. Konfigurieren Sie die Einstellungen für die Einschränkung und klicken Sie dann auf Hinzufügen. Dem gleichen Regelsatz können mehrere Einschränkungen hinzugefügt werden.

  3. Um einem bestimmten regex-Muster zu entsprechen, wählen Sie im Dropdownmenü „Anforderung“ die Option Muss einem bestimmten regex-Muster entsprechen aus.

    Für die meisten Anforderungen, z. B. „Muss mit einem übereinstimmenden Muster beginnen“, wird das von dir eingegebene Muster wörtlich interpretiert, und Platzhalter werden nicht unterstützt. Das Zeichen * stellt beispielsweise nur das Literalzeichen * dar.

    Für komplexere Muster kannst du „Muss einem bestimmten Regex-Muster entsprechen“ oder „Darf nicht mit einem bestimmten Regex-Muster übereinstimmen“ auswählen. Verwende dann die Syntax regulärer Ausdrücke, um das übereinstimmende Muster zu definieren. Weitere Informationen findest du unter „Über reguläre Ausdrücke für Commit-Metadaten“ in der Dokumentation zu GitHub Enterprise Cloud.

    Alle, die die Regelsätze für ein Repository anzeigen, können die von dir bereitgestellte Beschreibung sehen.

  4. Bevor du deinen Regelsatz mit Metadateneinschränkungen aktivierst, kannst du optional den Erzwingungsstatus „Evaluate“ für deinen Regelsatz auswählen, um die Auswirkungen von Metadateneinschränkungen zu testen, ohne Mitwirkende zu beeinträchtigen. Weitere Informationen zu Metadateneinschränkungen findest du unter Verfügbare Regeln für Regelsätze.

Abschließen des Verzweigungs- oder Tag-Regelsatzes und der nächsten Schritte

Klicken Sie auf Erstellen, um das Erstellen des Regelsets zu beenden. Wenn der Durchsetzungsstatus des Regelsatzes auf „Aktiv“ eingestellt ist, wird der Regelsatz sofort wirksam.

Sie können Erkenntnisse für den Regelsatz anzeigen, um zu sehen, wie sich die Regeln auf Ihre Teilnehmer auswirken. Wenn der Durchsetzungsstatus auf „Auswerten“ festgelegt ist, können Sie sehen, welche Aktionen bestanden oder fehlgeschlagen wären, wenn der Regelsatz aktiv war. Weitere Informationen zu den Erkenntnissen für Regelsätze finden Sie unter „Verwalten von Regelsätzen für ein Repository.“