2. témakör · Helyi munka: az első commitok · 6. fejezet
A Git legfontosabb fejezete. Megismered a munkakönyvtár, az előkészítési terület
és a repository kapcsolatát, a fájlok állapotait, és elkészíted az első commitjaidat
git add és git commit paranccsal, majd a GitHub Desktopban is.
git status hosszú és rövid (-s) kimenetét.git add) és rögzítesz (git commit -m) változásokat, és vissza is veszed őket az előkészítésből.A Gitben egy változás három helyen lehet. A munka mindig ugyanabba az irányba halad:
git add → git commit. Visszafelé (szaggatott):
git restore --staged kiveszi az előkészítésből, git restore eldobja a munkakönyvtár
változását.| Terület | Mi van benne? | Hová kerül tovább? |
|---|---|---|
| Munkakönyvtár working directory | A fájlok, ahogy most a lemezen vannak. Itt szerkesztesz, hozol létre és törölsz. | git add → előkészítés |
| Előkészítési terület staging area, index | Azoknak a fájloknak az állapota, amelyek a következő commitba kerülnek. | git commit → repository |
| Repository a .git mappa | A rögzített commitok, vagyis a projekt teljes története. | (a 18. fejezetben: git push → GitHub) |
A munkakönyvtár a szobád: mindenféle holmi van szanaszét. Az előkészítési terület egy
nyitott doboz: ebbe teszed (git add) azt, amit el akarsz küldeni, és bármit ki is vehetsz belőle.
A commit a doboz lezárása és felcímkézése (az üzenet). A lezárt dobozt már nem módosítod, és bármikor
elővehető a raktárból (a repository-ból).
Mert te döntöd el, mi kerüljön egy commitba. Ha egyszerre javítottál egy hibát és kezdtél el egy új funkciót, a kettőt külön commitba teheted: előbb csak a hibajavítás fájljait készíted elő és commitolod, aztán a többit. Így a történet áttekinthető marad (7. fejezet).
A Git minden fájlról nyilvántartja, melyik állapotban van. Először is: követi-e (tracked) egyáltalán?
git add teszi
staged állapotúvá. A commit után unmodified, szerkesztéskor modified lesz,
majd újra git add és git commit következik.| Állapot | Jelentés | A git status-ban |
|---|---|---|
| untracked (követetlen) | A fájl ott van a mappában, de a Git még sosem vett róla pillanatképet. | Untracked files (piros) |
| unmodified (változatlan) | Követett fájl, amely azóta nem változott, hogy utoljára commitoltad. | nem jelenik meg |
| modified (módosított) | Követett fájl, amely megváltozott, de a változás még nincs előkészítve. (A törölt követett fájl is ide tartozik: deleted.) | Changes not staged for commit (piros) |
| staged (előkészített, added) | A fájl mostani állapota bekerül a következő commitba. | Changes to be committed (zöld) |
Döntsd el a leírás vagy a git status kimenete alapján!
git status olvasásaA git status a legtöbbet használt parancs. Mindig megmondja, melyik fájl melyik területen van
és milyen állapotban. Minden más parancs előtt és után érdemes lefuttatni. Egy tipikus kimenet, mindhárom
csoporttal:
PS C:\Users\anna\projektek\weboldal> git status On branch main Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: index.html new file: kapcsolat.html Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: style.css Untracked files: (use "git add <file>..." to include in what will be committed) todo.txt
A zárójeles sorok tippek: a Git mindig leírja, melyik paranccsal léphetsz tovább vagy vissza.
git status -sKét betűs kód minden fájl előtt: az első az előkészítési terület, a második a munkakönyvtár állapota.
PS> git status -s M index.html A kapcsolat.html M style.css ?? todo.txt
| Kód | Jelentés |
|---|---|
?? | untracked: követetlen fájl |
A | added: új fájl, előkészítve |
M | módosítás, előkészítve |
M | módosítás, nincs előkészítve |
MM | előkészítve, de azóta újra módosult (lásd a 4. szakaszt) |
D / D | törlés, előkészítve / nincs előkészítve |
git addA git add a fájl jelenlegi tartalmát az előkészítési területre teszi. Ez két
helyzetben kell: új fájl első felvételéhez, és egy már követett fájl módosításának előkészítéséhez.
| Parancs | Mit készít elő? |
|---|---|
git add index.html | egyetlen fájlt |
git add index.html style.css | több fájlt (szóközzel elválasztva) |
git add kepek | egy mappa összes változását |
git add . | az aktuális mappa és almappái összes változását (új, módosított, törölt) |
git add -A | a teljes repó összes változását, bárhol állsz |
Sikeres futás után a git add semmit nem ír ki. Az eredményt a
git status mutatja meg.
Ha a git add után tovább szerkeszted a fájlt, a commitba a korábbi, az
add pillanatában érvényes változat kerül. A fájl ilyenkor egyszerre két csoportban is megjelenik:
PS> git add index.html PS> "<p>Még egy sor</p>" | Add-Content index.html PS> git status -s MM index.html
Megoldás: add ki újra a git add index.html parancsot, ha a friss változatot is commitolni szeretnéd.
A git add . kényelmes, de mindent előkészít, a véletlenül ott felejtett fájlokat is
(jegyzetek, jelszavak, 200 MB-os videó). Előtte mindig nézd meg a git status-t! Amit sosem
szeretnél commitolni, azt a .gitignore fájlba írd (9. fejezet).
git commitA git commit az előkészítési terület tartalmából új commitot készít: rögzíti az
összeállított változásokat a repóban. A -m kapcsolóval adod meg az üzenetet:
PS C:\Users\anna\projektek\weboldal> git commit -m "Első változat: kezdőlap és stílus" [main (root-commit) 3b18e51] Első változat: kezdőlap és stílus 2 files changed, 14 insertions(+) create mode 100644 index.html create mode 100644 style.css
| Rész | Jelentés |
|---|---|
main | az ág, amelyre a commit került |
(root-commit) | ez a repó legelső commitja, nincs szülője (csak egyszer látod) |
3b18e51 | az új commit rövid hash-e (egyedi azonosító) |
2 files changed, 14 insertions(+) | hány fájl változott, hány sor került be (+) vagy ki (−) |
create mode 100644 | új fájl került a repóba (a 100644 a „közönséges fájl” jelölése) |
-mA git commit -m nélkül megnyitja a beállított szerkesztőt (a 2. fejezetben a
VS Code-ot állítottuk be). Írd az üzenetet az első sorba, mentsd, és zárd be a fület: a Git csak ezután
folytatja. Ha üresen hagyod, a commit elmarad: Aborting commit due to empty commit message.
git commit -amAz -a kapcsoló a commit előtt automatikusan előkészíti a már követett fájlok
módosításait és törléseit:
PS> git commit -am "Menü színének javítása"
Az -am csak a követett fájlokra hat. Az untracked fájlok kimaradnak, azokat előbb
git add-dal kell felvenni.
A git commit a változásokat a helyi repóba (a .git mappába)
rögzíti. A GitHubra ettől még semmi nem kerül fel: ahhoz a git push kell (18. fejezet). Commitolni
internet nélkül is lehet.
Ha nincs mit commitolni (üres az előkészítési terület), a Git a git status-szerű kimenettel válaszol, például:
nothing to commit, working tree clean, vagy no changes added to commit, ha van módosítás, de nincs előkészítve.
Tévedésből előkészítettél egy fájlt? Semmi gond, amíg nem commitoltad:
PS> git restore --staged todo.txt
A fájl kikerül a „dobozból”, a tartalma a munkakönyvtárban változatlan marad. Új fájlnál újra untracked,
módosított fájlnál újra modified lesz. (Régebbi leírásokban ugyanezt a git reset HEAD <fájl> végzi.
Még nem commitolt repóban a Git a git rm --cached <fájl> parancsot javasolja.)
A --staged nélküli git restore index.html a munkakönyvtárban lévő,
még nem előkészített módosításokat eldobja, és a fájlt visszaállítja az előkészített (vagy utoljára commitolt)
állapotra. A módosítás nem kerül a Lomtárba! A visszavonás minden módjáról a 10. fejezetben lesz szó.
A git log kilistázza a commitokat, a legújabbal kezdve:
PS> git log commit 8c41d0a2f59e3b7d6c1a0e9f8b7a6c5d4e3f2a1b (HEAD -> main) Author: Kovács Anna <kovacs.anna@pelda.hu> Date: Tue Sep 22 10:41:07 2026 +0200 Kapcsolat oldal commit 3b18e512dba79e4c8300dd08aeb37f8e728b8dad Author: Kovács Anna <kovacs.anna@pelda.hu> Date: Tue Sep 22 10:12:55 2026 +0200 Első változat: kezdőlap és stílus PS> git log --oneline 8c41d0a (HEAD -> main) Kapcsolat oldal 3b18e51 Első változat: kezdőlap és stílus
A HEAD -> main jelzi, hogy a main ágon vagy, és ez a legutóbbi commitja.
Ha a lista hosszú, a Git lapozóban mutatja: kilépés q (3. fejezet). Az előzmények részletes olvasását a
8. fejezetben tanuljuk.
A weboldal repó már létezik, benne két még követetlen fájl. Add ki a parancsokat, és figyeld az
ábrát a terminál alatt: minden parancs után megmutatja, melyik fájl melyik területen van. A szimulátor ismeri a
git add, git commit, git status [-s],
git log [--oneline] és git restore [--staged] parancsot.
A GitHub Desktop a Changes fülön mutatja a munkakönyvtár változásait. Az előkészítési terület nem látszik külön, a jelölőnégyzetek helyettesítik:
<nav> <a href="index.html">Kezdőlap</a> + <a href="kapcsolat.html">Kapcsolat</a> </nav>
| GitHub Desktop | Parancssori megfelelője |
|---|---|
| A Changes fül listája a jelekkel (● módosult, + új, − törölt) | git status |
| A fájlra kattintva jobb oldalt a változás (zöld: új sor, piros: törölt sor) | git diff (8. fejezet) |
| Bepipált jelölőnégyzet | git add <fájl> |
| A pipa kivétele | git restore --staged <fájl> |
| Summary (kötelező) + Description | a commitüzenet első sora + a részletes leírás |
| Commit … to main gomb | git commit |
| History fül | git log |
| Jobb klikk a fájlon → Discard changes… | git restore <fájl> (eldobja a módosítást!) |
A GitHub Desktop minden változást automatikusan bepipál, vagyis alapesetben mindent commitol, mint a
git add -A és a git commit együtt. Commit előtt mindig nézd át a listát, és vedd ki a pipát
abból, ami nem odavaló. Egy fájlon belül soronként is választhatsz: a diffben a sorszámokra kattintva
csak a kijelölt sorok kerülnek a commitba.
A VS Code Source Control panelje (Ctrl + Shift + G) külön mutatja a két csoportot: Staged Changes (előkészítve) és Changes (nincs előkészítve).
| A VS Code-ban | Jelentés / megfelelő |
|---|---|
| U M A D betű a fájl mellett | Untracked · Modified · Added (előkészített új fájl) · Deleted |
| + ikon a fájlon (Stage Changes) | git add <fájl> |
| − ikon a Staged Changes alatt (Unstage Changes) | git restore --staged <fájl> |
| Üzenet a felső mezőbe, majd ✓ Commit (Ctrl + Enter) | git commit -m "…" |
| ↶ ikon (Discard Changes) | git restore <fájl> (eldobja!) |
Ha semmit nem készítettél elő, és a ✓ Commit gombra kattintasz, a VS Code felajánlja, hogy mindent előkészít és commitol. Ez kényelmes, de gondold át, tényleg mindent szeretnél-e.
Ezt a kört fogod naponta sokszor bejárni:
git statusmi változott?git add …összekészíted, ami összetartozikgit statustényleg az van a dobozban, amit akartál?git commit -m "…"rögzíted, beszédes üzenettelgit log --onelineott van a történetbenInkább sok kis commit, mint egy óriási. Egy commit egy logikai változást tartalmazzon, például „Kapcsolat űrlap validálása”, és ne „Péntek délutáni munka” legyen az üzenete. A jó commitról szól a következő fejezet.
⭐ alap · ⭐⭐ haladó · ⭐⭐⭐ kihívás — a saját gépeden, valódi repóban dolgozz!
Az 5. fejezet elso-repo repójában hozz létre egy index.html és egy
style.css fájlt, legyen bennük tartalom is! Minden lépés után futtass git status-t:
előbb csak az index.html-t add hozzá, aztán a style.css-t, végül commitold
őket "Első változat: kezdőlap" üzenettel. Nézd meg a git log-ot.
Módosítsd az index.html-t! Nézd meg a git status és a
git status -s kimenetét az add előtt és után is. Írd le, mit jelentenek a kódok. Commitolj.
Az 5. fejezetben készült desktop-repo-ban módosíts két fájlt! A GitHub Desktop Changes fülén
vedd ki az egyikből a pipát, és csak a másikat commitold. Nézd meg a History fület, és hogy mi maradt a Changes-ben.
Idézd elő az MM állapotot: add hozzá a fájlt, majd módosítsd tovább! Mit mutat a
git status? Commitolj úgy, hogy ne add hozzá újra, majd nézd meg a
git status-t. Mi került a commitba, és mi maradt ki?
Hozz létre egy jelszavak.txt fájlt, és „véletlenül” add ki a git add . parancsot!
Vedd ki a fájlt az előkészítésből úgy, hogy a többi előkészített fájl maradjon, és ellenőrizd a git status-szal.
A VS Code Source Control panelén készíts elő egy fájlt a + ikonnal, írj üzenetet, és commitolj a ✓ gombbal!
Ellenőrizd parancssorból a git log --oneline kimenetét.
Módosítsd egyszerre a fejlécet (index.html), a láblécet (lablec.html) és a
színeket (style.css)! Készíts belőlük három külön commitot beszédes üzenetekkel.
Magyarázd el, miért jobb ez, mint egyetlen „módosítások” commit.
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.
| Fogalom | Jelentés |
|---|---|
| munkakönyvtár (working directory) | a fájlok aktuális állapota a lemezen; itt szerkesztesz |
| előkészítési terület (staging area, index) | a következő commitba kerülő fájlállapotok gyűjtőhelye |
| repository | a .git mappa: a rögzített commitok, a történet |
| tracked / untracked | követett (a Git nyilvántartja) / követetlen (még sosem volt előkészítve) |
| unmodified · modified · staged | változatlan · módosított, de nem előkészített · előkészített |
git add | a fájl jelenlegi tartalmát az előkészítési területre teszi |
git commit -m "…" | az összeállított (előkészített) változásokat új commitként rögzíti |
git commit -am "…" | a követett fájlok változásait előkészíti és commitolja (az új fájlokat nem) |
| root-commit | a repó legelső, szülő nélküli commitja |
git restore --staged | kiveszi a fájlt az előkészítésből (a tartalom marad) |
git restore | eldobja a munkakönyvtár nem előkészített módosításait |
git status -s | rövid állapot két betűvel: előkészítés + munkakönyvtár (??, A, M, D) |
git add) → előkészítési terület →
(git commit) → repository.git status ezeket mutatja (zöld: előkészítve, piros: nem).git add a pillanatnyi tartalmat készíti elő. Ha utána módosítasz, újra add kell (MM).git commit -m "üzenet" rögzít. Az -am az új fájlokat nem veszi fel. A commit nem tölt fel a GitHubra.git restore --staged: ki a dobozból · git restore: módosítás eldobása (végleges!).A következő fejezetben megtanuljuk, milyen a jó commit: mekkora legyen, és hogyan írjunk hozzá jó üzenetet.