Git és GitHub kézikönyv

A mindennapi parancsok magyarul, a GitHubos csapatmunka lépései, és mit tegyél, ha valami elromlott. Keresd meg, másold ki, és már mehetsz is tovább.

Nem tudod a parancs nevét? Indulj abból, mit szeretnél elérni: új branch, visszavonás, konfliktus, elveszett commit. Mit akarok csinálni?

Enterre a legjobb találat másológombjára ugrik.

Kategória

76 parancs

  • Biztonságos nem változtat a munkádon
  • Adatvesztés veszélye munka veszhet el végleg
  • Jelölés nélkül: módosít, de visszacsinálható
01

Mit akarok csinálni?

Ha a célt tudod, a parancsot nem: válaszd ki a helyzetet, és lépésről lépésre végigvezet. Minden recept linkje elküldhető egy csapattársnak.

Kezdés

Először használom a Gitet ezen a gépen

  1. Add meg a neved és az e-mail-címed. A GitHub az e-mail alapján köti a commitot a fiókodhoz.

    git config --global user.name "Kovács Anna"
    git config --global user.email "anna@example.com"
  2. Az új repók alapága legyen main. A Git jelenleg master néven hozza létre, a 3.0-s verziótól lesz main az alapértelmezés.

    git config --global init.defaultBranch main

    Forrás: A git init hivatalos leírása (új lapon nyílik)

  3. 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
  4. Ellenőrizd, mi lett beállítva.

    git config --list --show-origin

Kezdés

Be akarok jelentkezni a GitHubra a terminálból

  1. 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.

    gh auth login

    Forrás: GitHub Docs: hitelesítés távoli repóhoz (új lapon nyílik)

  2. 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:…).

    ssh-keygen -t ed25519 -C "anna@example.com"
    ssh -T git@github.com
  3. HTTPS-en jelszó helyett személyes hozzáférési tokent (personal access token) írsz be. A Git Credential Manager megjegyzi, nem kell mindig beírni.

    A tokent kezeld jelszóként: ne commitold, ne küldd el senkinek.

Kezdés

Új projektet indítok, és fel akarom tenni a GitHubra

  1. Hozd létre a repót a projekt mappájában.

    git init
  2. Írd meg előbb a .gitignore-t (függőségek, build-kimenet, .env), hogy ezek be se kerüljenek.

  3. Nézd meg, mi kerülne be, aztán az első commit.

    git status
    git add .
    git commit -m "chore: initial commit"
  4. GitHub CLI-vel egy lépésben létrehozod a GitHub-repót és feltöltöd.

    gh repo create <név> --private --source=. --push
  5. Vagy kézzel: a GitHubon hozz létre egy üres repót (README nélkül), és kösd össze. Ha az alapágad még master, azt írd a main helyére.

    git remote add origin <url>
    git push -u origin main

Kezdés

Egy meglévő projekten akarok dolgozni

  1. Töltsd le a repót. A címet a GitHubon a zöld Code gomb alatt találod.

    git clone <url>
    cd <mappa>
  2. Ne a main-en dolgozz: kezdj saját branchet.

    git switch -c feat/<rövid-leírás>
  3. Idegen projekthez, ahová nincs írási jogod, előbb forkold a GitHubon (saját másolat a fiókodban), és a forkot klónozd.

Napi munka

Új funkción kezdek dolgozni

  1. Indulj a friss mainről, így később kevesebb a konfliktus.

    git switch main
    git pull
  2. Új branch, beszédes névvel.

    git switch -c feat/login-oldal
  3. Dolgozz, és közben nézd, mi változott.

    git status
    git diff
  4. Kis, egy témájú commitok. Csak azt add hozzá, ami ebbe a commitba tartozik.

    git add src/login.js src/login.css
    git commit -m "feat: add login form"
  5. 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

  1. A branch legyen feltöltve.

    git push -u origin <branch>
  2. A GitHubon a repó oldalán megjelenik a Compare & pull request gomb. Ellenőrizd az irányt: base: main ← compare: a te branched.

  3. 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.

  4. Terminálból ugyanez a GitHub CLI-vel. Ha még dolgozol rajta, piszkozatként nyisd.

    gh pr create --fill
    gh pr create --draft
  5. 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

  1. Töltsd le a távoli újdonságokat.

    git fetch origin
  2. Biztonságos út: olvaszd be a main-t a branchedbe. A történet nem íródik át.

    git merge origin/main
  3. 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ő?

  1. Válts vissza a mainre, és húzd le a beolvasztott változást.

    git switch main
    git pull
  2. Töröld a helyi branchet.

    git branch -d feat/login-oldal
  3. 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.

  4. 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

  1. Tedd félre a változásokat, az új fájlokkal együtt.

    git stash -u
  2. Intézd el a sürgős dolgot a másik branchen.

    git switch main
  3. 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

  1. Ha fájl maradt ki, előbb stage-eld.

    git add <fájl>
  2. 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

  1. 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
  2. Á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
  3. 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

  1. Ha stage-elted, előbb vedd ki a stage-ből. Ez még semmit nem dob el.

    git restore --staged <fájl>
  2. 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)

  1. A commit megszűnik, a változások stage-elve maradnak. Így újra commitolhatod másképp.

    git reset --soft HEAD~1
  2. Ha a stage-ből is ki akarod venni őket (a fájlokban megmaradnak):

    git reset HEAD~1
  3. A HEAD~1 jelentése: eggyel a mostani commit előtt.

Hibák javítása

Egy már pusholt commitot kell visszavonni

  1. Keresd meg a hibás commit hash-ét.

    git log --oneline
  2. Új commit, amely visszacsinálja. A történet nem íródik át, a csapattársaknak semmi dolguk vele.

    git revert <hash>
    git push
  3. 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)

  1. A reflog megmutatja, hova mutatott a HEAD. Keresd meg a commitot az üzenete alapján.

    git reflog
  2. Csinálj új branchet a hash-ből: a commit és minden, ami előtte volt, visszakerül.

    git switch -c mentes <hash>
  3. 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.

    Forrás: A git reflog hivatalos leírása (új lapon nyílik)

Hibák javítása

Konfliktust jelez a Git

  1. Nézd meg az érintett fájlokat („both modified”).

    git status
  2. 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.

  3. Próbáld ki, hogy működik, aztán jelezd, hogy kész.

    git add <fájl>
  4. Merge-nél zárd le committal, rebase-nél folytasd.

    git commit
    git rebase --continue
  5. 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

  1. 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.

  2. Vedd ki a fájlt a követésből, tedd a .gitignore-ba, és commitold.

    git rm --cached .env
    git commit -m "chore: stop tracking .env"
  3. 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.

    Forrás: GitHub Docs: Removing sensitive data (új lapon nyílik)

Hibák javítása

A .gitignore nem hat egy fájlra

  1. A .gitignore csak a még nem követett fájlokra hat. Ami már commitolva van, azt előbb ki kell venni a követésből. A fájl a lemezen megmarad.

    git rm --cached <fájl>
  2. Mappánál -r kell.

    git rm -r --cached <mappa>
  3. Commitold a változást.

    git commit -m "chore: stop tracking ignored files"
02

A négy hely

Egy változás négy helyen lehet. A legtöbb félreértés abból jön, hogy nem világos, melyik parancs mit hova visz. Válassz egy parancsot, és megmutatom.

1

Munkakönyvtár

A mappád fájljai, ahogy épp szerkeszted őket.

working tree
2

Előkészítés

Amit kiválasztottál a következő commitba.

staging area, index
3

Helyi repó

A commitjaid a gépeden, a rejtett .git mappában.

local repository
4

Távoli repó

A GitHubon. A csapat csak ezt látja.

remote, origin

Válassz fent egy parancsot.

03

Csapatmunka a GitHubon

Egy feladat útja a friss maintől a beolvasztásig, és a konvenciók, amiket a legtöbb csapat követ. Ha a ti csapatotok másképp csinálja, az a mérvadó.

A teljes kör

  1. Friss main

    Indulj a legfrissebb állapotról: git switch main, aztán git pull.

  2. Saját branch

    Soha ne a mainen dolgozz: git switch -c feat/login-oldal.

  3. Kis commitok

    Egy commit, egy logikai változás. Commit előtt mindig git status.

  4. Push

    Első alkalommal git push -u origin feat/login-oldal, utána elég a git push.

  5. Pull request

    A GitHubon, vagy gh pr create --fill. Recept

  6. Review és javítás

    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őtagMirePélda
feat/új funkciófeat/user-login
fix/hibajavításfix/cart-total
docs/dokumentációdocs/setup-guide
refactor/átszervezésrefactor/api-client
chore/karbantartás, függőségekchore/update-deps
test/tesztektest/auth-tests
hotfix/sürgős éles javításhotfix/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.

Í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ípusMirePélda
featúj funkciófeat: add password reset
fixhibajavításfix: prevent crash on empty cart
docsdokumentációdocs: add setup guide
styleformázás, a működés nem változikstyle: format with prettier
refactorátszervezés, a viselkedés nem változikrefactor: split user service
perfteljesítményperf: cache product query
testtesztektest: add login validation tests
buildbuild rendszer, függőségekbuild: bump vite to 6.0
ciCI-konfigurációci: run tests on pull requests
choreegyéb karbantartáschore: update eslint config
revertkorábbi commit visszavonásarevert: 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.

  1. Csak a fájlban git restore <fájl>

    Eldobja a módosítást. Nem visszacsinálható. Ha nem vagy biztos benne: git stash -u.

  2. Stage-elve git restore --staged <fájl>

    Kiveszi a stage-ből, a módosítás a fájlban megmarad.

  3. Commitolva, nincs push git reset --soft HEAD~1

    A commit megszűnik, a változás stage-elve marad. Csak az üzenet rossz: git commit --amend.

  4. Már pusholva git 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.

    Helyette git 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.

    Helyette git 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.

    Helyette git merge origin/main

  • git push --force

    Mások commitjai nyom nélkül eltűnhetnek a távoli branchről. A main-en soha.

    Helyette git push --force-with-lease --force-if-includes

  • git restore <fájl>

    A mentetlen módosítás végleg elvész, a Git sosem tárolta.

    Helyette git stash -u

  • git restore --source=<hash> <fájl>

    A fájl jelenlegi, nem commitolt módosításai elvesznek.

    Helyette git 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.

    Helyette git reset --keep <hash>

  • git clean -fd

    A nem követett fájlok sosem voltak a Gitben, ezért semmiből nem hozhatók vissza.

    Helyette git 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

<<<<<<< HEAD
Szia, ü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űveletTerminálVS CodeGitHub DesktopJetBrains
Mi változottgit statusSource Control nézet (Ctrl Shift G)Changes fülCommit ablak (Ctrl K)
Branch váltásgit switchA branch neve bal alulCurrent BranchGit-menü › Branches
Új branchgit switch -cBranch neve › Create new branchCurrent Branch › New BranchGit-menü › New Branch
Stagegit add+ a fájl mellettPipa a fájl mellettPipa a fájl mellett
Commitgit commitÜzenet, majd CommitCommit to <branch>Commit
Pushgit pushSync Changes vagy Publish BranchPush originCtrl Shift K
Pullgit pull… menü › PullFetch origin, majd Pull originCtrl T (Update Project)
Eldobásgit restoreDiscard ChangesDiscard changesRollback
Történetgit logSource Control GraphHistory fülGit 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.

GitHub Docs: docs.github.com (új lapon nyílik). CC BY 4.0

GitHub CLI manual: cli.github.com/manual (új lapon nyílik). MIT

Conventional Commits 1.0.0: www.conventionalcommits.org/en/v1.0.0 (új lapon nyílik). CC BY 3.0

A Git a Software Freedom Conservancy, a GitHub a GitHub, Inc. védjegye. Az oldal nem áll kapcsolatban velük.

Menü

Vissza a főoldalra
Esc

↑↓ választás Enter megnyitás