Döntsd el, mit csináljon a git pull, ha a helyi és a távoli történet elágazott. Beállítás nélkül megáll és kérdez. Kezdőknek a merge a legbiztonságosabb.
git config --global pull.rebase false
Ellenőrizd, mi lett beállítva.
git config --list --show-origin
Kezdés
Be akarok jelentkezni a GitHubra a terminálból
A GitHub 2021 óta nem fogad jelszót Git-műveletekhez. A legegyszerűbb a GitHub CLI: böngészőben jelentkezel be, és a Git is ezt használja.
SSH-kulcs, ha nem akarsz CLI-t: hozz létre egy kulcspárt, a nyilvános felét (~/.ssh/id_ed25519.pub) add hozzá a GitHubon: Settings › SSH and GPG keys. Ezután SSH-címmel klónozz (git@github.com:…).
Töltsd fel. Az első push összeköti a helyi branchet a távolival.
git push -u origin feat/login-oldal
Napi munka
Pull requestet akarok nyitni
A branch legyen feltöltve.
git push -u origin <branch>
A GitHubon a repó oldalán megjelenik a Compare & pull request gomb. Ellenőrizd az irányt: base: main ← compare: a te branched.
A cím Conventional Commits formátumú legyen, mert squash merge-nél ebből lesz a commit üzenete. A leírásba írd: mit, miért, hogyan teszteld. Closes #42: a beolvasztáskor lezárja a 42-es issue-t.
Terminálból ugyanez a GitHub CLI-vel. Ha még dolgozol rajta, piszkozatként nyisd.
gh pr create --fill
gh pr create --draft
Review után ugyanarra a branchre commitolj és pusholj: a PR magától frissül, nem kell újat nyitni.
Napi munka
A main elhaladt a branchem mellett
Töltsd le a távoli újdonságokat.
git fetch origin
Biztonságos út: olvaszd be a main-t a branchedbe. A történet nem íródik át.
git merge origin/main
Vagy rebase, ha a branchet csak te használod: egyenes történet, de új hash-ek. Ha már pusholtad, utána erővel kell pusholni.
git rebase origin/main
git push --force-with-lease --force-if-includes
Megosztott branchen ne rebase-elj: a többiek munkáját eldobhatod.
Napi munka
Beolvasztották a PR-omat, mi a teendő?
Válts vissza a mainre, és húzd le a beolvasztott változást.
git switch main
git pull
Töröld a helyi branchet.
git branch -d feat/login-oldal
Squash merge után a -d gyakran tiltakozik („not fully merged”), mert a Git nem ismeri fel az egybeolvasztott commitot. Ha a GitHubon látod, hogy a PR be van olvasztva, használd a -D-t.
git branch -D feat/login-oldal
A -D be nem olvasztott munkát is töröl. Csak ellenőrzés után.
Takarítsd el a GitHubon már törölt branchek helyi nyomát.
git fetch --prune
Napi munka
Gyorsan át kell váltanom, de félkész a munkám
Tedd félre a változásokat, az új fájlokkal együtt.
git stash -u
Intézd el a sürgős dolgot a másik branchen.
git switch main
Vissza, és hozd elő a félretett munkát.
git switch -
git stash pop
Hibák javítása
Elírtam az utolsó commit üzenetét, vagy kimaradt egy fájl
Ha fájl maradt ki, előbb stage-eld.
git add <fájl>
Javítsd az utolsó commitot. Megnyílik a szerkesztő az üzenettel; --no-edit-tel az üzenet marad.
git commit --amend
Az amend új hash-t ad. Ha már pusholtad, és mások is használják a branchet, inkább új commitot csinálj.
Hibák javítása
A mainre commitoltam a saját branch helyett
Ez a recept akkor jó, ha még nem pusholtál. Előbb hozz létre egy branchet a mostani ponton: a commitjaid ide kerülnek, te a mainen maradsz.
git branch feat/uj
Állítsd vissza a main-t a távoli állapotra. A --keep megáll, ha mentetlen módosítást írna felül.
git reset --keep origin/main
Válts az új branchre: a commitjaid ott vannak.
git switch feat/uj
Hibák javítása
El akarom dobni egy fájl módosításait
Ha stage-elted, előbb vedd ki a stage-ből. Ez még semmit nem dob el.
git restore --staged <fájl>
Eldobás: a fájl a legutóbbi commit állapotára áll vissza.
git restore <fájl>
A mentetlen módosítás végleg elvész. Ha nem vagy biztos benne, inkább git stash -u: félreteszi, és visszahozható.
Hibák javítása
Vissza akarom vonni az utolsó commitot (még nem pusholtam)
A commit megszűnik, a változások stage-elve maradnak. Így újra commitolhatod másképp.
git reset --soft HEAD~1
Ha a stage-ből is ki akarod venni őket (a fájlokban megmaradnak):
git reset HEAD~1
A HEAD~1 jelentése: eggyel a mostani commit előtt.
Hibák javítása
Egy már pusholt commitot kell visszavonni
Keresd meg a hibás commit hash-ét.
git log --oneline
Új commit, amely visszacsinálja. A történet nem íródik át, a csapattársaknak semmi dolguk vele.
git revert <hash>
git push
Megosztott branchen ne reset-tel és erővel pusholva vond vissza: a többiek történetét eltöröd.
Hibák javítása
Elveszett egy commitom (reset, törölt branch)
A reflog megmutatja, hova mutatott a HEAD. Keresd meg a commitot az üzenete alapján.
git reflog
Csinálj új branchet a hash-ből: a commit és minden, ami előtte volt, visszakerül.
git switch -c mentes <hash>
Határidő: a reflog bejegyzései alapból 90 napig maradnak meg, a már semmilyen branchről el nem érhető commitoké 30 napig. A reflog csak a te gépeden van.
Nyisd meg a fájlt. A <<<<<<< és ======= között a te változatod, a ======= és >>>>>>> között a bejövő. Írd meg a végleges változatot, és töröld a jelölőket.
Próbáld ki, hogy működik, aztán jelezd, hogy kész.
git add <fájl>
Merge-nél zárd le committal, rebase-nél folytasd.
git commit
git rebase --continue
Ha elakadtál, minden visszaállítható a kezdés előtti állapotba.
git merge --abort
git rebase --abort
Hibák javítása
Jelszót vagy API-kulcsot commitoltam
Először a kulcsot érvénytelenítsd vagy cseréld le a szolgáltatónál. Csak ez véd valójában: ami pusholva volt, azt már bárki lemásolhatta.
A commit törlése önmagában nem elég, a titok a történetben marad.
Vedd ki a fájlt a követésből, tedd a .gitignore-ba, és commitold.
A történet tisztítását a GitHub Docs „Removing sensitive data from a repository” leírása szerint végezd (git-filter-repo), és egyeztess a csapattal, mert mindenkinek újra kell klónoznia.
Ugyanarra a branchre commitolj és pusholj, a PR magától frissül.
7
Merge és takarítás
Zöld CI és jóváhagyás után merge, majd helyben takaríts. Recept
Branch-nevek
Formátum: típus/rövid-leírás. Kisbetű, kötőjel, ékezet nélkül. Ha van ticketrendszer, a szám is bekerülhet: feat/PROJ-123-user-login.
Előtag
Mire
Példa
feat/
új funkció
feat/user-login
fix/
hibajavítás
fix/cart-total
docs/
dokumentáció
docs/setup-guide
refactor/
átszervezés
refactor/api-client
chore/
karbantartás, függőségek
chore/update-deps
test/
tesztek
test/auth-tests
hotfix/
sürgős éles javítás
hotfix/payment-crash
Commit-üzenetek
A Conventional Commits formátum: típus(terület): leírás. A terület elhagyható, a ! törő változást jelez. A leírás angolul, felszólító módban, kisbetűvel, pont nélkül. Üres sor után jöhet a törzs: abba azt írd, miért változtattál.
0
Írás közben ellenőrzöm a formátumot.
A megszokott típusok. A szabvány csak a feat és a fix típust rögzíti, a többi az Angular-konvencióból terjedt el.
Típus
Mire
Példa
feat
új funkció
feat: add password reset
fix
hibajavítás
fix: prevent crash on empty cart
docs
dokumentáció
docs: add setup guide
style
formázás, a működés nem változik
style: format with prettier
refactor
átszervezés, a viselkedés nem változik
refactor: split user service
perf
teljesítmény
perf: cache product query
test
tesztek
test: add login validation tests
build
build rendszer, függőségek
build: bump vite to 6.0
ci
CI-konfiguráció
ci: run tests on pull requests
chore
egyéb karbantartás
chore: update eslint config
revert
korábbi commit visszavonása
revert: feat: add password reset
fix(auth): handle expired token on refresh
Previously the app crashed with a 500 error when the refresh
token had expired. Now the user is sent to the login page.
Closes #42
Több soros üzenethez futtasd a git commit-ot -m nélkül (megnyílik a szerkesztő), vagy add meg kétszer: git commit -m "cím" -m "törzs".
A pull request leírása
A PR címe is Conventional Commits formátumú legyen, mert squash merge-nél ebből lesz a commit üzenete. A Closes #42 a beolvasztáskor lezárja a 42-es issue-t. Jó PR kicsi, egy témáról szól, és önmagában működik.
## Mit csinál?
Bejelentkezési oldal e-mail és jelszó mezővel.
## Miért?
A felhasználók eddig nem tudtak belépni.
## Hogyan teszteld?
1. npm run dev
2. Nyisd meg a /login oldalt
3. Lépj be egy tesztfiókkal
Closes #42
Merge-típusok a GitHubon
Merge commit
Minden commit megmarad, és keletkezik egy összefésülő commit. A teljes történet látszik, de zajosabb.
Squash and merge
A branch minden commitja egyetlen commitba olvad: egy PR, egy commit. A legtöbb csapat ezt használja, kezdőknek ez az ajánlott.
Rebase and merge
A commitok egyenként, új hash-sel kerülnek a main végére. Egyenes történet, összefésülő commit nélkül.
Melyik engedélyezett, a repó beállításai döntik el. Sok csapat azt is beállítja, hogy a mainre csak PR-on át, jóváhagyással és zöld CI-jal lehessen írni (branch protection). Ez téged is véd.
04
Visszavonás és mentés
Szinte minden megjavítható, ami egyszer commitolva volt. Előbb azt kell tudni, hol tart a hibás változás, mert attól függ a biztonságos parancs.
Csak a fájlbangit restore <fájl>
Eldobja a módosítást. Nem visszacsinálható. Ha nem vagy biztos benne: git stash -u.
Stage-elvegit restore --staged <fájl>
Kiveszi a stage-ből, a módosítás a fájlban megmarad.
Commitolva, nincs pushgit reset --soft HEAD~1
A commit megszűnik, a változás stage-elve marad. Csak az üzenet rossz: git commit --amend.
Már pusholvagit revert <hash>
Új commit, amely visszacsinálja a régit. A történet nem íródik át, a csapatnak ez a biztonságos.
Veszélyes parancsok
Ezek után munka veszhet el végleg. Mielőtt futtatod, nézd meg a biztonságosabb párját.
git stash drop
A törölt stasht a szokásos biztonsági háló (reflog) nem hozza vissza, csak nehézkesen, a git fsck segítségével.
Helyettegit stash show -p
git branch -D <branch>
A be nem olvasztott commitokra ezután semmi nem mutat. Csak a reflogból, hash alapján menthetők, és idővel törlődnek.
Helyettegit branch -d <branch>
git push --force-with-lease --force-if-includes
Ez is felülírja a távoli történetet. Ha a branchet más is használja, az ő munkáját eldobhatja.
Helyettegit merge origin/main
git push --force
Mások commitjai nyom nélkül eltűnhetnek a távoli branchről. A main-en soha.
A mentetlen módosítás végleg elvész, a Git sosem tárolta.
Helyettegit stash -u
git restore --source=<hash><fájl>
A fájl jelenlegi, nem commitolt módosításai elvesznek.
Helyettegit show <hash>:<fájl>
git reset --hard <hash>
Minden nem commitolt módosítás végleg elvész. Az eldobott commitok csak a reflogból menthetők.
Helyettegit reset --keep <hash>
git clean -fd
A nem követett fájlok sosem voltak a Gitben, ezért semmiből nem hozhatók vissza.
Helyettegit clean -n
Konfliktusjelölők
Ha két ember ugyanazt a sort írta át, a Git nem dönt helyetted: jelölőket ír a fájlba. A te dolgod megírni a végleges változatot és törölni a jelölőket. A teljes recept
<<<<<<< HEADSzia, üdv az oldalunkon!=======Üdvözlünk a weboldalunkon!>>>>>>> main
<<<<<<< HEAD
Kezdet. Alatta a te változatod.
=======
A két változat határa.
>>>>>>> main
Vége. Fölötte a bejövő változat.
Elakadtál? A git merge --abort vagy a git rebase --abort mindent visszaállít a kezdés előtti állapotba. Elveszettnek hiszel egy commitot? Így hozod vissza a reflogból.
05
Grafikus felületen
A gombok mögött ugyanazok a parancsok futnak. Ha tudod, melyik melyik, a terminálos receptek is használhatók.
Művelet
Terminál
VS Code
GitHub Desktop
JetBrains
Mi változott
git status
Source Control nézet (Ctrl Shift G)
Changes fül
Commit ablak (Ctrl K)
Branch váltás
git switch
A branch neve bal alul
Current Branch
Git-menü › Branches
Új branch
git switch -c
Branch neve › Create new branch
Current Branch › New Branch
Git-menü › New Branch
Stage
git add
+ a fájl mellett
Pipa a fájl mellett
Pipa a fájl mellett
Commit
git commit
Üzenet, majd Commit
Commit to <branch>
Commit
Push
git push
Sync Changes vagy Publish Branch
Push origin
Ctrl Shift K
Pull
git pull
… menü › Pull
Fetch origin, majd Pull origin
Ctrl T (Update Project)
Eldobás
git restore
Discard Changes
Discard changes
Rollback
Történet
git log
Source Control Graph
History fül
Git ablak › Log
A billentyűparancsok a Windows alapbeállításai, macOS-en a Ctrl helyett általában ⌘.
Gyakori buktatók
Commit előtt nézd meg, melyik branchen állsz. A leggyakoribb kezdő hiba a mainre commitolni. Ha már megtörtént
A VS Code Sync Changes gombja pull és push egyszerre, ezért konfliktust is hozhat.
A Publish Branch azt jelenti, hogy a branch még nincs a GitHubon: ez az első git push -u.
Ha a Commit gomb nem kattintható, nincs stage-elt változás, vagy hiányzik az üzenet.
A GitHub Desktopban nincs külön stage lépés: a bepipált fájlok kerülnek a commitba.
Ha bizonytalan vagy, nyiss terminált az IDE-ben, és futtasd a git status-t. Csak olvas, és megmondja, hol tartasz.
06
Kérdések
Mi a különbség a Git és a GitHub között?
A Git a gépeden futó verziókezelő program: a projekt teljes történetét tárolja, és internet nélkül is működik. A GitHub egy webszolgáltatás, ahol a repó egy példányát tárolod, hogy többen dolgozhassatok rajta. Ez adja a pull requestet, az issue-kat, a review-t és az automatikus teszteket (CI). Hasonló szolgáltatás a GitLab és a Bitbucket.
Mi a különbség a fetch és a pull között?
A git fetch csak letölti a távoli újdonságokat, a fájljaidhoz és a brancheidhez nem nyúl. A git pull letölt és be is olvaszt (fetch + merge, vagy rebase, ha így állítottad be), ezért konfliktust okozhat. Ha előbb látni akarod, mi jött: git fetch, majd git log HEAD..origin/main --oneline.
Merge vagy rebase?
A merge nem írja át a történetet: a két ágat egy összefésülő commit köti össze. Biztonságos, megosztott branchen is. A rebase a commitjaidat újrajátssza a cél végén: egyenes történet, de új hash-ek, ezért pusholt branchnél erővel kell utána pusholni. Csak a saját, egyedül használt branchen rebase-elj. Ha bizonytalan vagy, merge.
Miért nem fogadja el a GitHub a jelszavamat?
A GitHub 2021. augusztus 13. óta nem fogad fiókjelszót Git-műveletekhez. Helyette jelentkezz be a GitHub CLI-vel (gh auth login), használj SSH-kulcsot, vagy HTTPS-en személyes hozzáférési tokent (personal access token), amelyet a Git Credential Manager megjegyez. Részletek: GitHub Docs (új lapon nyílik).
Miért switch és restore, miért nem checkout?
A git checkout két különböző dolgot csinál: branchet vált és fájlt állít vissza, ezért könnyű vele véletlenül felülírni egy fájlt. A Git 2.23 (2019) óta ezt két egyértelmű parancs végzi: a git switch (új lapon nyílik) a branchváltást, a git restore (új lapon nyílik) a fájlok visszaállítását. A checkout továbbra is működik.
main vagy master az alapág neve?
A GitHub 2020 októbere óta main néven hozza létre az új repók alapágát. A Git maga (2.56.0) beállítás nélkül még master néven indítja az új repót. A hivatalos git init leírás (új lapon nyílik) szerint ez a Git 3.0-ban main-re változik. Addig így állíthatod át: git config --global init.defaultBranch main.
Források
A parancsok és kapcsolók a Git hivatalos kézikönyve alapján, a Git 2.56.0 verzióval ellenőrizve (2026. október 12.). Minden parancs mellett a Leírás link a hivatalos oldalára visz. A szöveg saját megfogalmazás, máshonnan nem vettünk át szöveget.
Git Reference Manual:git-scm.com/docs (új lapon nyílik). A Git dokumentációja (GPLv2); a parancsok és kapcsolók tényadatok, a szöveg saját.
Pro Git, 2. kiadás (Scott Chacon, Ben Straub):git-scm.com/book (új lapon nyílik). CC BY-NC-SA 3.0; csak hivatkozás, szöveg átvétele nélkül.