JavaScript is disabled in your browser. Please enable it for the full experience.

Git gyakorlati parancsok – alaptól hard resetig

Ebben a részben végigvesszük a Git legfontosabb, gyakorlati parancsait – azokat, amelyeket egy fejlesztés során nap mint nap használni fogsz. Jó ideje használom már én is a Git-et, és ebben az anyagban pontosan azokat a parancsokat gyűjtöttem össze, amiket én magam is a munkám 85%-ában használok napi szinten. Nincs felesleges elmélet, nincs bonyolítás – csak…

⏳ 10 perc

Lőrincz András

Ebben a részben végigvesszük a Git legfontosabb, gyakorlati parancsait – azokat, amelyeket egy fejlesztés során nap mint nap használni fogsz.

Jó ideje használom már én is a Git-et, és ebben az anyagban pontosan azokat a parancsokat gyűjtöttem össze, amiket én magam is a munkám 85%-ában használok napi szinten.

Nincs felesleges elmélet, nincs bonyolítás – csak működő példák, amit ha begyakorolsz, teljesen kézben fogod tartani a verziókezelést.

Legfontosabb Git parancsok a gyakorlatban


git status – Megnézed, mi változott:

git status

Mit mutat:

  1. hol állsz (melyik ágon)
  2. melyik fájl módosult
  3. van-e commitra váró fájl

git add – Kiválasztod, mit akarsz elmenteni:

git add .         # minden fájl hozzáadása
git add fajlnev.php

git commit – Mentés:

git commit -m "Üzenet a változásról"

git push – Feltöltés GitHubra:

git push -u origin ágnev

git pull – Frissítés GitHubról (ha más is dolgozik rajta):

git pull

git log –oneline – Korábbi mentések megtekintése:

git log --oneline

# Ez mutatja, pl.:
92f74ba  Szállítási árak
a5f0d4a  Menü átrendezés
4dc0f85  UX teszt első verzió

# A bal oldalon látható 7 karakteres kódok a commit hash-ek (HEAD-ek) rövidített formái.
# Ezek az azonosítók szolgálnak arra, hogy pontosan be tudd azonosítani a mentéseket.

git branch – Megnézed, milyen ágak vannak, és melyiken vagy:

git branch

git checkout -b újág – Új ág létrehozás és átváltunk rá:

git checkout -b újág 
# Ez a parancs egyetlen lépésben két dolgot csinál:
# Létrehoz egy új ágat (branch-et), újág néven + Azonnal át is vált rá

Ágak (branch) létrehozásához kis kiegészítő:

ParancsMit csinál
git branch ág_neveCsak létrehozza az ágat
git checkout ág_neveCsak átvált a megadott ágra
git checkout -b ág_neveLétrehozza és azonnal átvált rá (2 az 1-ben)

git checkout main – Váltás másik ágra:

git checkout main
#Létező main ágra vátunk

git merge ágnev – Másik ág összeolvasztása az aktuálisba:

git merge UX-refactoring
# Itt van egy UX refactoring águnk és ha minden jól sült el, összeolvaszthatjuk a main ággal

És most jön az egyik kedvencem! Visszaállítás TOTÁLIS katasztrófa esetén! Akkor, ha minden elromlott egy adodtt ponttól, és csak akkor!

git reset –hard COMMITHASH – Visszaállás egy régi állapotra:

git reset --hard 4dc0f85
# Itt a 4dc0f85 a commit hash-ek (HEAD-ek), amit git log --oneline -al listáhatunk ki! 
# Ezek lényegében a visszaálítási pontok!

Mit csinál pontosan a git reset --hard?

Ezzel a paranccsal a branch utolsó commit-ja mostantól a 4dc0f85 lesz.

A korábbi a5f0d4a és 92f74ba commit-ok már nem szerepelnek a git log kimenetében.

Az ezután következő commit-ok nem lesznek többé elérhetők abban az ágba (látszólag „törlődnek”), de a Git még pár napig megtartja őket a reflog-ban.

Az utána következő commit-ok látszólag „törlődnek”, de a Git reflog-ban még elérhetők egy ideig:

git reflog

Áthelyezi a HEAD mutatót a megadott <COMMITID>-re.

Munkakönyvtár és a staging area tartalma is visszaáll a megadott commit állapotára.

Rövid példa

#Régi git log --oneline után:
92f74ba  Szállítási árak
a5f0d4a  Menü átrendezés
4dc0f85  UX teszt első verzió
#Reseteljük a UX teszt első verzió -ra, aminek a HEAD hash-e: 4dc0f85
#Ez törli a későbbi commitokat!
git reset --hard 4dc0f85

#Új git log --oneline után
4dc0f85  UX teszt első verzió

Így az a5f0d4a és 92f74ba commit-ok nem szerepelnek többé a branch történetében. De git reflog-al még visszahívható egy ideig!

A törölt commitok még a git reflog-ban visszakereshetők egy ideig.

Ha már push-oltál a távoli repóba, a --hard reset után csak git push --force-al szinkronizálj, és egyeztess a csapattal (ha van, ha magad dolgozol, annál jobb 🙂 )!


git push –force – Hard reset után feltolás GitHubra:

git push --force

git remote -v – Megnézed, melyik GitHub repo van hozzárendelve:

git remote -v

git clone URL.git – Másik gépre vagy új helyre letöltöd a repót:

git clone https://github.com/felhasznalonev/reponev.git

git reflog – Vészhelyzet! Megnézed, mikor voltál melyik állapotban:

git reflog

git reset –hard HEAD@{1} – Ha vissza akarsz menni egy pillanattal ezelőttire:

git reset --hard HEAD@{1}

Összefogaló:

ParancsMire jó
git statusMi változott?
git add .Minden változást előkészít
git commit -m "..."Változások mentése
git pushFeltöltés GitHubra
git checkout -b névÚj ág létrehozása és váltás
git log --onelineCommitok listázása
git reset --hard commitidVisszaugrás régi állapotra (fájlszinten is)
git push --forceFeltöltés reset után

Ha idáig eljutottál, akkor már biztos alapszintű Git-tudásod van.
Ezeket a parancsokat napi szinten használják a fejlesztők – és most már te is fogod.

Persze, a Git ennél jóval többet tud, de ezek az alapok már önálló, magabiztos használatra elegek.
Nem kell többé kézzel, számozottan menteni a verziókat, nem fogod elveszíteni a munkád, és vissza tudsz lépni bármikor!

Git haladó parancsok

Hibakezelés, összevonás, visszalépés

Az alapparancsokkal már simán elboldogulsz, de ha ténylegesen dolgozol projekteken, hamar eljön az a pont, amikor valamit elrontasz, vissza kell állni, vagy több ágat kell kezelni párhuzamosan.
Az alábbi parancsok ezekre az életszerű helyzetekre adnak megoldást.

# GIT HALADÓ PARANCSOK – kommentben a parancs részletei

# Félretett változtatások ideiglenes tárolása
git stash              # Elteszi a nem commitolt változtatásokat
git stash pop          # Visszateszi a legutóbbi stash-t

# Ágak összeolvasztása (merge)
git checkout main      # Átváltás a célágra (pl. main)
git merge feature-ag   # Az adott ágat beleolvasztja a main-be

# Konfliktus esetén: a fájlban manuálisan feloldod, majd:
git add .              # A feloldott fájlokat hozzáadod
git commit             # Létrehozod a merge utáni commitot

# Nem verziókezelt fájlok törlése
git clean -fd          # Törli a nem követett fájlokat és könyvtárakat (force + directory)

# Különbségek megtekintése
git diff               # Megmutatja, mi változott az utolsó commit óta
git diff fajlnev.php   # Csak egy adott fájl módosításait mutatja

# Átírás merge helyett (tisztább történet)
git checkout feature           # Átváltás a módosított ágra
git rebase main                # Úgy viszi rá a változtatásokat, mintha most történtek volna

# Már volt, de ismétlésnek: előző lépések visszanézése, visszaállítás vészhelyzetben
git reflog                     # Teljes mozgásnapló: mit csináltál a HEAD-del
git reset --hard HEAD@{1}     # Visszaállás az előző HEAD állapotra

# Egy adott commit átvétele a jelenlegi ágba
git cherry-pick 92f74ba       # Átveszi a megadott commit tartalmát

# Reset típusok – HEAD visszatekerése
git reset --soft commitid     # Visszateker, de megtartja a staging állapotot
git reset --mixed commitid    # Visszateker, staging üres, working copy marad (ez az alap)
git reset --hard commitid     # Visszateker, staging és working copy is törlődik

# Egy fájl visszaállítása az utolsó commit szerinti állapotra
git restore fajlnev.php
Lőrincz András avatar

Lőrincz András

Lőrincz András vagyok, így hívnak. WordPress fejlesztőként weboldalak készítésével foglalkozom.

Amikor épp nem weboldalakat rakok össze, kvantumfizikáról vagy sci-firől olvasok, nézek videókat. Néha pedig elmerengek azon, hogy vajon mit csinál a másik énem egy párhuzamos univerzumban. Talán ő is épít valamit – vagy épp megőrült.

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük