Hoppa till innehåll

Skyddade grenar

  • Vad en skyddad gren är.
  • Att skydda main så att varje ändring måste gå genom en pull requestPull request (PR)Ett förslag om att föra in ändringarna från en branch i en annan, så att andra kan granska och diskutera dem först.Läs mer om pull request.
  • Vad som händer när någon ändå försöker skicka direkt till main.

I modul 4 kom du överens med dig själv om att main alltid ska fungera. Men en överenskommelse glöms lätt, särskilt när man är många. En skyddad grenBranchEn egen utvecklingslinje i ett repository, där man kan göra ändringar utan att påverka huvudversionen.Läs mer om gren gör överenskommelsen till en regel som GitHub kontrollerar. Då kan ingen råka skicka en ändring till main som ingen har sett.

Ett skydd för en gren är en regel på GitHub. De vanligaste valen är:

Val på GitHub Betyder
Require a pull request before merging Ingen kan skicka direkt till grenen. Ändringar måste komma via en pull request.
Require approvals Pull requesten måste godkännas av ett visst antal andra personer.
Do not allow bypassing the above settings Reglerna gäller även ägaren och administratörer.

Utan det sista valet gäller reglerna inte dig som äger repositoryt. Det är GitHubs standard, så att en ägare inte kan låsa ute sig själv. Vill du att skyddet ska gälla alla, kryssa i det.

Require approvals kräver någon annan än den som har öppnat pull requesten, eftersom ingen kan godkänna sin egen. Arbetar du ensam kryssar du därför inte i det valet. Då kan du fortfarande föra in dina egna pull requests.

Med skyddet på nekas en git push direkt till main. GitHub svarar med ett felmeddelande som börjar så här:

Terminal
remote: error: GH006: Protected branch update failed for refs/heads/main.

Raden efter säger vilken regel som stoppade dig, till exempel att en pull request krävs. Ingenting har skickats, och din commit finns kvar hos dig. Flytta den till en gren och skicka grenen i stället:

Terminal
git switch -c min-andring
git push -u origin min-andring

Öppna sedan en pull request för min-andring som vanligt. Din main ligger nu en commit före origin/main. Det rättar sig när pull requesten är införd och du har kört git pull.

Stegen följer GitHubs instruktioner för classic branch protection rules. GitHub har också ett nyare sätt, rulesets, som fungerar på liknande sätt.

1. Vad gör "Require a pull request before merging"?
Visa rätt svar
  • Ingen kan skicka direkt till grenen – ändringar måste komma via en pull request
2. Du har skyddat main men din egen git push till main går igenom. Varför?
Visa rätt svar
  • "Do not allow bypassing the above settings" är inte ikryssad, så reglerna gäller inte ägaren
3. Du arbetar ensam. Varför ska du inte kryssa i "Require approvals"?
Visa rätt svar
  • Ingen kan godkänna sin egen pull request, så du skulle aldrig kunna föra in något

  • En skyddad gren har regler som GitHub kontrollerar vid varje git push och sammanslagning.
  • Require a pull request before merging gör att alla ändringar måste gå via en pull request.
  • Utan Do not allow bypassing the above settings gäller reglerna inte ägaren.
  • Require approvals kräver en annan person. Arbetar du ensam, kryssa inte i den.
  • En nekad git push till main löser du genom att flytta commiten till en gren och öppna en pull request.