Vezérlőpult
24. Munkafolyamat: GitHub Flow · Csapatmunka GitHubon

5. témakör · Csapatmunka GitHubon · 24. fejezet

Munkafolyamat: GitHub Flow

Megvan minden eszköz: ág, pull request, review, issue. Egy csapatnak viszont közös szabály is kell arra, hogyan kerül egy változás a közös main-re. A legegyszerűbb és legelterjedtebb ilyen szabályrendszer a GitHub Flow. Ebben a fejezetben megismered a lépéseit, a csapatszabályokat, és beállítod a védett main ágat, amely a szabályokat ki is kényszeríti.

CLI + WebFlow-kirakóSzabálybíróFlow-labor16 kvízkérdés

Tanulási célok

1Mi a munkafolyamat?

A munkafolyamat (workflow, branching strategy) a csapat megállapodása arról, milyen ágakat használtok, hogyan kerül a munka a közös ágra, és ki dönt a beolvasztásról. A Git ezt nem írja elő: ugyanazokkal a parancsokkal sokféle munkafolyamat megvalósítható.

A GitHub Flow alapgondolata egyetlen mondat: a main mindig működőképes (kiadható), minden más munka rövid életű ágakon folyik, és pull requesten keresztül kerül a main-re.

2A GitHub Flow lépései

1. Ága friss main-ből, beszédes névvelgit switch -c feature/galeria
2. Commitokkicsik, jó üzenettelgit commit -m "feat: …"
3. Pull requestkorán, akár draftkéntgit push -u origin …
4. Review + ellenőrzésmegjegyzés, javítás, CIgit push (javítás)
5. Mergejóváhagyás után, a GitHubonSquash and merge
6. Telepítés, rendrakása main kiadható; az ág törölhetőgit pull · git branch -d

3Flow-kirakó

Kattints a lépésekre a helyes sorrendben! Egy új funkció útja a gépedtől a kiadott main-ig.

Flow-kirakó

Tipp: a hiba nem büntet, csak számolja a kirakó.

Hibák: 0

4Csapatszabályok

A GitHub Flow keret; a részleteket a csapat maga dönti el, és jó, ha le is írja (CONTRIBUTING.md). Egy iskolai projektcsapat szabálylistája így nézhet ki:

  1. A main-re senki nem push-ol közvetlenül: minden változás PR-ban jön (a védett ág ki is kényszeríti).
  2. Ágnevek: feature/…, fix/…, docs/…, kisbetűvel, kötőjellel (feature/kapcsolat-oldal).
  3. Commitüzenet: Conventional Commits (feat:, fix:, docs:), 7. fejezet.
  4. Egy PR = egy téma, lehetőleg 300 módosított sor alatt; a leírásban Closes #…, ha issue-hoz tartozik.
  5. Minden PR-hoz legalább 1 jóváhagyás kell; a bíráló 24 órán belül válaszol.
  6. Merge-mód: Squash and merge; a beolvasztott ág törlődik.
  7. Napi kezdés: git switch main, git pull; új munka mindig a friss main-ből.

Szabálybíró

Szabályos ez a GitHub Flow (és a fenti csapatszabályok) szerint?

1 / 8Pontszám: 0
…

5Védett main ág

A szabály annyit ér, amennyit betartanak. A védett ág (branch protection rule) a GitHubon kényszeríti ki: a repó Settings → Branches → Add branch protection rule oldalán a Branch name pattern legyen main, és kapcsold be a kívánt szabályokat.

BeállításHatása
Require a pull request before merginga main-re csak PR-on keresztül kerülhet változás; a közvetlen push elutasítódik
↳ Required approvals: 1legalább egy jóváhagyás kell a merge-hez (a saját nem számít)
↳ Dismiss stale pull request approvals…új commit után a korábbi jóváhagyás elavul (21. fejezet)
Require status checks to passcsak zöld automatikus ellenőrzés (CI) mellett lehet beolvasztani (27. fejezet)
↳ Require branches to be up to datea PR ágának tartalmaznia kell a main legfrissebb állapotát (Update branch)
Require conversation resolutionminden megjegyzésszálat le kell zárni (Resolve conversation)
Allow force pushes (alapból ki)kikapcsolva a main történetét senki nem írhatja át
Allow deletions (alapból ki)kikapcsolva a main nem törölhető

Ha valaki mégis közvetlenül push-ol a védett main-re, ezt kapja:

remote: error: GH006: Protected branch update failed for refs/heads/main.
remote:
remote: - Changes must be made through a pull request.
To https://github.com/anna-kovacs/osztalyoldal.git
 ! [remote rejected] main -> main (protected branch hook declined)
error: failed to push some refs to 'https://github.com/anna-kovacs/osztalyoldal.git'
ℹ️ RULESETS

Az újabb GitHub-felületen a Settings → Rules → Rulesets ugyanezt tudja, rugalmasabban (több ágra, címkékre, kivételekkel). A fogalmak ugyanazok; a klasszikus branch protection rule továbbra is működik. Privát repóban a védett ágakhoz fizetős csomag kellhet, nyilvános repóban ingyenes.

6Véletlenül a main-re commitoltál

Gyakori hiba: elfelejtesz ágat nyitni, a main-en commitolsz, és a push-t elutasítja a védelem. Semmi gond, a commitot átteszed egy ágra (10. és 11. fejezet):

PS> git branch docs/keszitok        # új ág a mostani commitra (a munka megmarad rajta)
PS> git reset --hard origin/main    # a helyi main vissza a GitHub-os állapotra
PS> git switch docs/keszitok
PS> git push -u origin docs/keszitok  # és innen már PR
⚠️ ELŐBB AZ ÁG, AZTÁN A RESET

A sorrend fontos: a git branch „megjelöli” a commitot, így a reset --hard után sem vész el. Fordított sorrendben csak a reflogból tudnád visszahozni (10. fejezet). Nem commitolt változásnál egyszerűbb: git switch -c docs/keszitok — a módosítások átjönnek az új ágra.

7Más munkafolyamatok

GitHub FlowGit FlowTrunk-based
Hosszú életű ágakmainmain + developmain (trunk)
Rövid életű ágakfeature/fix ágak, PR-ralfeature/, release/, hotfix/ ágaknagyon rövidek (órák), vagy közvetlen commit
Kiadása main bármikor kiadhatótervezett verziók release ágakonfolyamatos, gyakran naponta többször
Kinek való?webes projektek, kis és közepes csapatok, iskolai projektekverziózott termékek (pl. telepíthető program több támogatott verzióval)tapasztalt csapat, erős automatikus teszteléssel

Kezdőknek és iskolai csapatoknak a GitHub Flow a legjobb választás: kevés szabály, és minden eleme (ág, PR, review, védett main) a GitHub felületén is látszik.

8Flow-labor

Az osztalyoldal repó a tiéd, Péter a csapattársad. Kapcsold be a védelmet, nézd meg, mit szól a GitHub, ha mégis közvetlenül push-olsz, aztán vidd végig a változást szabályosan.

PowerShell + Git + GitHub

Windows PowerShell
Küldetések 0 / 8
    A gépeden
    A GitHubonanna-kovacs/osztalyoldal

    9Feladatok

    Gyakorló feladatok

    ⭐ alap · ⭐⭐ haladó · ⭐⭐⭐ kihívás

    24.1⭐Web

    Egy saját nyilvános repódban állíts be védett main ágat (kötelező PR, 1 jóváhagyás). Próbálj közvetlenül a weben szerkeszteni a main-en: mit ajánl fel a GitHub?

    24.2⭐CLI

    Commitolj a gépeden a védett main-re, és próbáld feltölteni. Olvasd el a GH006 üzenetet, majd mentsd a commitot egy ágra a fejezet módszerével.

    24.3⭐⭐

    Írjátok meg a csapatotok CONTRIBUTING.md fájlját a 4. szakasz mintájára (ágnevek, commitüzenet, PR-méret, review, merge-mód), és tegyétek fel PR-ral.

    24.4⭐⭐CLIWeb

    Párban vigyetek végig egy teljes GitHub Flow kört: issue → ág → commitok → draft PR → review → javítás → jóváhagyás → squash merge → ág törlése → git pull.

    24.5⭐⭐Web

    Kapcsold be a Require branches to be up to date és a Require conversation resolution szabályt. Idézz elő olyan helyzetet, amikor emiatt nem lehet beolvasztani, és oldd meg.

    24.6⭐⭐

    Hasonlítsd össze egy mondatban a GitHub Flow-t és a Git Flow-t: melyik illik egy iskolai weboldal-projekthez, és melyik egy telepíthető programhoz, amelynek több verzióját támogatni kell?

    24.7⭐⭐⭐Web

    Egy héten át dolgozzatok csapatban szigorú GitHub Flow szerint (védett main, Projects tábla, issue minden feladathoz). A hét végén a Pulse és az Insights oldal alapján értékeljétek: hány PR készült, mennyi idő alatt olvadtak be?

    10Önellenőrző kvíz

    Ellenőrizd magad!

    Az egyválasztós kérdéseknél kattints a válaszra. A többválasztósaknál jelöld be az összes helyeset, majd nyomd meg az Ellenőrzés gombot.

    11Fogalomtár

    FogalomJelentés
    munkafolyamat (workflow)a csapat megállapodása az ágak használatáról és a változások útjáról
    GitHub Flowegy hosszú életű ág (main, mindig kiadható) + rövid életű ágak, PR-ral, review-val
    feature branchrövid életű ág egy funkcióhoz vagy javításhoz
    védett ág (branch protection rule)GitHub-szabály egy ágra: kötelező PR, jóváhagyás, ellenőrzések, tiltott force push és törlés
    GH006a GitHub hibaüzenete, ha egy push megsérti a védett ág szabályait
    status checkautomatikus ellenőrzés (pl. teszt), amelynek zöldnek kell lennie a merge-hez
    Git Flowösszetettebb munkafolyamat develop, release és hotfix ágakkal
    trunk-based developmentmindenki nagyon gyakran, nagyon kis lépésekben olvaszt a fő ágba
    CONTRIBUTING.mda csapat (projekt) hozzájárulási szabályai

    12Összegzés

    1. GitHub Flow: a main mindig kiadható; minden munka rövid életű ágon készül, és PR-ral kerül a main-re.
    2. Lépések: ág → commitok → (korai) PR → review és ellenőrzések → merge → telepítés, ág törlése, git pull.
    3. A csapatszabályokat (ágnevek, commitüzenet, PR-méret, review, merge-mód) írjátok le a CONTRIBUTING.md-be.
    4. A védett main kikényszeríti: kötelező PR és jóváhagyás, zöld ellenőrzések, tiltott force push és törlés; megsértésekor GH006.
    5. Véletlen main-commit: git branch új-ág → git reset --hard origin/main → az új ágról PR.

    Ezzel a csapatmunka témakör végére értél. A következő témakörben az eszközöké a főszerep: jön a Git a VS Code-ban és a Visual Studióban.