Seit der ursprünglichen Frage / Antwort hat Github der Benutzeroberfläche für eingeschränkte Zweige eine neue Option hinzugefügt, mit der Sie diese einrichten können.
Pull-Request-Überprüfungen vor dem Zusammenführen erforderlich Wenn diese Option aktiviert ist, müssen alle Commits an einen nicht geschützten Zweig gesendet und über eine Pull-Anforderung mit der erforderlichen Anzahl genehmigender Überprüfungen und ohne angeforderte Änderungen gesendet werden, bevor sie in einen Zweig zusammengeführt werden können, der dieser Regel entspricht.
Bearbeiten: Die Antwort unter dieser enthält weitere Details, einschließlich der Tatsache, dass dies nicht funktioniert, wenn Sie über Administratorrechte verfügen.
Die aktuell akzeptierte Antwort ist tatsächlich korrekt. Wenn Sie jedoch Eigentümer einer Organisation sind oder über Administratorrechte verfügen. Wenn Sie das Repo erstellt haben, können Sie dennoch auf geschützte Zweige zugreifen. Aus der Github-Dokumentation unter https://help.github.com/de/articles/about-branch-restrictions :
Für jede andere Art von Mitarbeiter
git push
wird fehlschlagen.Wenn Sie das Pushing von qt all wirklich deaktivieren möchten, müssen Sie dies lokal einrichten, indem Sie
pushRemote
wie zuvor erwähnt einen ungültigen für einen Zweig konfigurieren :git config branch.master.pushRemote no_push
oder Sie können einen Pre-Push-Haken wie hier gezeigt einrichten: https://gist.github.com/vlucas/8009a5edadf8d0ff7430
quelle
Sie können Zweigstellenbeschränkungen aktivieren und entscheiden, wer (in Bezug auf Benutzer und Teams der Organisation) pushen darf.
https://help.github.com/articles/about-branch-restrictions/
«Hinweis: Wenn die Option" Administratoren einschließen "aktiviert ist und Sie die erforderlichen Statusprüfungen für den Zweig aktiviert haben und dieser fehlschlägt, schlägt jeder Versuch, Änderungen an den Basiszweig zu übertragen, ebenfalls fehl, unabhängig vom Berechtigungsstatus eines Benutzers oder Teams.»
quelle
git config branch.master.pushRemote no_push
.Das direkte Drücken auf den Remote-Master wird abgelehnt, wenn Statusprüfungen aktiviert sind. Dies bedeutet, dass die einzige Möglichkeit, Commits auf dem Remote-Master hinzuzufügen, darin besteht, Pull-Anforderungen (die die Statusprüfungen bestehen) auf GitHub zusammenzuführen.
Hier ist mein Versuchsergebnis für den Hauptzweig, für den Statusprüfungen erforderlich sind:
quelle
Wenn Sie Free-Plan für Private Repo in Github verwenden, können Sie möglicherweise die Funktion für geschützte Zweige nicht verwenden. Sie müssen also jeden Push / Commit von lokal blockieren.
Dies habe ich getan, damit es lokal funktioniert und an alle Repo-Mitglieder verteilt wird.
Zunächst müssen Sie Husky installieren, um den Pre-Commit- und Pre-Push-Hook zu steuern. Dann habe ich ein Pre-Push-Bash-Skript erstellt und es im Repository festgeschrieben. Rufen Sie dann dieses Skript vom Husky-Pre-Push-Hook mit dem Husky-Parameter auf.
Dies ist meine Husky-Konfiguration im Inneren
package.json
(Sie können eine separate Konfiguration festlegen, wenn Sie möchten)Wie Sie sehen können, habe ich zwei Skripte, eines für Pre-Push und eines für Pre-Commit.
Und das ist mein
commands/pre-push
Bash-SkriptDas Skript wird im Grunde zwei Dinge tun:
master
unddevelop
verzweigt). Sie müssen in ihrer eigenen Niederlassung arbeiten und dann eine Pull-Anfrage erstellen.fix/someissue
aber dann geben Sie fälschlicherweise eingit push origin master
.Ausführlichere Anweisungen finden Sie in diesem Artikel:
https://github.com/talenavi/husky-precommit-prepush-githooks
quelle
Wenn Sie Node verwenden, können Sie mit Husky eine Pre-Push-Validierung erstellen, bei der kein direkter Push an den Master erfolgt. Auf diese Weise können Sie Ihre Administratorrechte weiterhin zum Zusammenführen von PRs verwenden. Ich denke, andere Sprachen haben ähnliche Lösungen wie Husky.
npm install husky --save-dev
/.huskyrc.js
:quelle