Git — mi ez, működési elvek és parancsok

Szerző: IT Sectr Megjelenés: 2026-05-09 Olvasási idő: 8 perc

Git — egy elosztott verziókezelő rendszer nyílt forráskóddal, amelyet Linus Torvalds hozott létre 2005-ben a Linux kernel fejlesztéséhez. Ellentétben a centralizált rendszerekkel, mint az SVN, a Git a fejlesztő minden eszközén tárolja a repozitórium teljes másolatát, lehetővé téve a munkát állandó szerverkapcsolat nélkül. A Git SCM, 2024 adatai szerint a Git a kereskedelmi szoftverfejlesztési projektek több mint 90%-ában használatos.

Főbb pontok

  • Git — elosztott VCS a változtatások teljes előzményével a fejlesztő minden számítógépén.
  • A commitok pillanatképeket készítenek a fájlok állapotáról egyedi SHA-1 hash segítségével a változtatások nyomon követésére.
  • Az ágak a Git-ben elkülönítik a funkciók fejlesztését és lehetővé teszik a párhuzamos munkát konfliktusok nélkül.
  • A Merge és a Rebase — a változtatások integrálásának két módja eltérő megközelítéssel a commitok előzményeihez.
  • GitHub, GitLab és Bitbucket — webes platformok, amelyek UI-t és CI/CD-t adnak a Git-repozitóriumok fölé.

Mi az a Git?

Git — egy elosztott verziókezelő rendszer (VCS), amely nyomon követi a fájlok változásait és lehetővé teszi több fejlesztő számára, hogy egyszerre dolgozzanak ugyanazon a projekten. Ellentétben a centralizált rendszerekkel, a Git-ben minden fejlesztő rendelkezik a repozitórium teljes másolatával, beleértve a változtatások teljes előzményét, ami ellenállóvá teszi a rendszert az adatvesztéssel szemben, és nem igényel állandó kapcsolatot a központi szerverrel.

A Git története 2005-ben kezdődött, amikor Linus Torvalds létrehozott egy új VCS-t, miután a BitKeeper visszavonta a rendszerének ingyenes licencét a Linux kernel fejlesztői számára. A célok a következők voltak: sebesség, az architektúra egyszerűsége, a nemlineáris fejlesztés támogatása elágazáson keresztül és teljes elosztottság. 3 hónap alatt Torvalds megírta a Git magját, és egy év múlva a projekt Junio Hamano vezetése alatt önkiszolgálóvá vált.

A Stack Overflow felmérése (2024) szerint a professzionális fejlesztők 93,9%-a használja a Git-et, ami az iparág domináns verziókezelő rendszerévé teszi. A legközelebbi versenytárs — a Subversion (SVN) — csak a projektek 5,2%-ában használatos, főként nagy vállalati környezetekben, centralizált folyamatokkal.

Hogyan működik a Git: repozitórium és commitok

A Git repozitórium — egy könyvtár, amelyben a Git nyomon követi az összes fájl változásait. A könyvtáron belül található egy rejtett .git mappa, ahol a rendszer összes objektuma tárolódik: commitok, fák, blobok és hivatkozások. Amikor egy fejlesztő commitot hoz létre, a Git nem másolja a fájlokat teljes egészében — pillanatképet (snapshot) készít az állapotról, és elment egy hivatkozást rá.

Minden commit tartalmaz: egyedi SHA-1 hash-t (40 karakter), hivatkozást az előző commitra (parent), szerzőt, dátumot, commit üzenetet és hivatkozást a fára (tree), amely leírja a fájlok állapotát a commit pillanatában. A commitok lánca egy irányított aciklikus gráfot alkot, ahol minden commit egy vagy több szülőre mutat.

bash
# Repozitórium inicializálása
git init my-project
cd my-project

# Commit létrehozása
echo "Hello, Git" > README.md
git add README.md
git commit -m "Initial commit"

# Előzmények megtekintése
git log --oneline --graph --all

A Git három fő területet használ: working directory (fájlok a lemezen), staging area (index, ahová az előkészített fájlok kerülnek) és repository (commitok előzményei). A git add parancs áthelyezi a változtatásokat a munkakönyvtárból a staging-be, a git commit pedig rögzíti a staging tartalmát a repozitóriumban. Ez a szétválasztás lehetővé teszi a fejlesztő számára, hogy értelmes commitot állítson össze a változtatások halmazából anélkül, hogy minden egyes javítást külön rögzítene.

Alapvető Git-parancsok

Az alapvető Git-parancsok lefedik a fejlesztő napi műveleteinek 90%-át. A git clone parancs létrehozza a távoli repozitórium helyi másolatát, a git pull letölti a változtatásokat a szerverről és egyesíti az aktuális ággal, a git push pedig elküldi a helyi commitokat a szerverre. Ez a három parancs alkotja a Git-tel való munka alapciklusát.

Az állapot megtekintéséhez a git status használatos — megmutatja, mely fájlok változtak meg, melyek lettek hozzáadva a staging-hez és melyek nem követettek. A git diff megjeleníti a konkrét változtatásokat a fájlokban a staging-hez adás előtt. Alább található a leggyakrabban használt parancsok táblázata:

ParancsMűveletPélda
git cloneLemásolja a távoli repozitóriumotgit clone https://example.com/repo
git addHozzáad fájlokat a staging-hezgit add src/main.kt
git commitRögzíti a változtatásokat az előzményekbengit commit -m "Fix login bug"
git pushElküldi a commitokat a szerverregit push origin main
git pullLetölti a változtatásokat a szerverrőlgit pull origin feature

A változtatások visszavonásához a Git több lehetőséget kínál. A git reset áthelyezi az ágmutatót a megadott commitra, és visszaállíthatja a staging-et vagy a munkakönyvtárat. A git revert létrehoz egy új commitot, amely visszavonja a megadott commit változtatásait — ez egy biztonságos visszavonási mód a megosztott ágakhoz, mivel az előzmények nem íródnak felül.

Elágazás a Git-ben: main, feature és release

Az ágak a Git-ben — könnyű mozgatható mutatók egy adott commitra. Új ág létrehozása nem másol fájlokat, csak egy új mutatót hoz létre, ami az elágazást gyakorlatilag azonnalivá teszi. A main ág (korábban master) — a projekt fő ága, amely a stabil, kiadásra kész kódot tartalmazza.

A szabványos gyakorlat a Git Flow vagy a GitHub Flow használata. A Git Flow-ban a következő ágakat használják: main (kiadási kód), develop (integrációs ág), feature/* (új funkciók), release/* (kiadások előkészítése) és hotfix/* (sürgős javítások). A GitHub Flow egyszerűbb: csak main és feature ágak, és minden változtatás Pull Requesten keresztül kerül kézbesítésre.

bash
# Ág létrehozása és váltása
git branch feature-auth
git checkout feature-auth
# vagy egy paranccsal:
git checkout -b feature-auth

# Ágak listája
git branch --list
git branch -a  # minden ág, beleértve a távoli ágakat is

# Ág törlése
git branch -d feature-auth

A Git elágazásának fontos tulajdonsága — a cherry-pick lehetősége: egy adott commit áthelyezése egyik ágból a másikba a git cherry-pick <hash> paranccsal. Ez akkor hasznos, ha egy hibajavítást kell áthelyezni egy feature ágból a release ágba anélkül, hogy a teljes ágat egyesítenénk. A Git támogatja a rebase-t és az interaktív rebase-t (git rebase -i) a commitok összeragasztásához, átrendezéséhez és szerkesztéséhez.

Összeolvasztás: Merge és Rebase

Merge (egyesítés) létrehoz egy speciális merge-commitot, amelynek két szülője van. Ez a commit rögzíti két ág egyesítésének tényét, és megőrzi a teljes előzményeket — látható, hol és mikor történt az egyesítés. A Merge az előzményeket abban a formában őrzi meg, ahogy létrejöttek, ami egyszerűsíti az auditálást, de bonyolultabbá teszi a commit gráfot.

Rebase (áthelyezés) a merge-commit létrehozása helyett áthelyezi az aktuális ág commitjait a célág tetejére. Az előzmények lineárissá válnak — az a benyomás keletkezik, hogy a fejlesztés szekvenciálisan történt. Azonban a rebase felülírja az előzményeket, megváltoztatva a commitok SHA-1 hash-jeit, ami veszélyessé teszi a megosztott ágak számára, amelyekhez más fejlesztők is hozzáférnek.

Ajánlás a választáshoz: használja a merge-t a nyilvános ágakhoz, ahol az előzményeket más fejlesztők is látják (feature → develop), és a rebase-t a helyi munkához, amikor friss változtatásokat kell alkalmaznia a main-ből a saját feature ágába a Pull Request létrehozása előtt. A szabály egyszerű: ha egy commit már elküldésre került a szerverre — ne rebase-elje.

Konfliktusok feloldása

Egyesítési konfliktus akkor keletkezik, amikor a Git nem tudja automatikusan egyesíteni a változtatásokat egy fájlban. A Git megjelöli a konfliktusos részeket a fájlban speciális jelölőkkel: <<<<<<< (mi változtatásaink), ======= (elválasztó), >>>>>>> (az ő változtatásaik). A fejlesztő manuálisan szerkeszti a fájlt, kiválasztja a kívánt opciót vagy kombinálja mindkettőt, és befejezi az egyesítést egy committal.

Távoli repozitóriumokkal való munka

Távoli repozitórium (remote) — a Git repozitórium másolata, amely a szerveren található. A GitHub, a GitLab és a Bitbucket a legnépszerűbb platformok a távoli repozitóriumok hosztolására. Webes felületet biztosítanak a kód megtekintéséhez, hozzáférés-kezeléshez, kód-ellenőrzéshez és CI/CD rendszerekkel való integrációhoz.

A Git-ben több távoli repozitórium is konfigurálható egy projekthez. Alapértelmezés szerint a fő remote neve origin. A git remote add parancs új remote-ot ad hozzá, a git fetch letölti a változtatásokat egyesítés nélkül, a git pull pedig a git fetch + git merge rövidítése. A Pull Request-en keresztüli kódmunkához a fejlesztő forkot készít a repozitóriumról, klónozza, feature ágban dolgozik, és egyesítési kérelmet küld az eredeti repozitóriumba.

bash
# Távoli repozitórium hozzáadása
git remote add origin https://github.com/user/repo.git

# Távoli repozitóriumok megtekintése
git remote -v

# Ág küldése a szerverre
git push -u origin feature-auth

# Változtatások letöltése a távoli ágról
git pull origin main

A távoli repozitóriumok támogatják a címkézést a kiadási verziók jelölésére. A címkék lehetnek könnyűek (csak mutató egy commitra) és annotáltak (metaadatokat tartalmaznak: szerző, dátum, üzenet). Az annotált címkék ajánlottak a kiadási verziókhoz, mivel teljes információt adnak át a verzióról, és GPK-kulccsal aláírhatók a szerzőség ellenőrzéséhez.

Git Worktree párhuzamos munkához

Git Worktree lehetővé teszi a több ággal való egyidejű munkát különböző könyvtárakban anélkül, hogy váltogatnunk kellene közöttük. A git worktree add ../feature-auth feature-auth parancs létrehoz egy új feature-auth munkakönyvtárat, ahol kódot lehet írni anélkül, hogy a fő könyvtárban ágat kellene váltani. A Worktree hasznos a release ágban történő gyors javításokhoz, amikor a fő könyvtár hosszú távú fejlesztéssel van elfoglalva.

Git Submodules függőségekhez

Git Submodules — mechanizmus az egyik Git repozitórium másikba történő beágyazására. A Submodule egy külső repozitórium rögzített commitjára tárol hivatkozást, ami garantálja a build reprodukálhatóságát. A git submodule add https://github.com/example/lib.git parancs egy külső könyvtárat ad hozzá almodulként. A submodule-okat tartalmazó projekt klónozásakor az összes függőség betöltéséhez végre kell hajtani a git submodule update --init --recursive parancsot.

Gyakran ismételt kérdések

Miben különbözik a Git az SVN-től?

Git — elosztott VCS helyi előzményekkel és offline munka lehetőségével. SVN — egy centralizált rendszer, amely állandó szerverkapcsolatot igényel minden művelethez, kivéve a fájlok megtekintését.

Hogyan vonható vissza az utolsó commit?

Használja a git revert HEAD-et a biztonságos visszavonáshoz (új commit jön létre). Ha a commit még nincs elküldve a szerverre, használhatja a git reset --soft HEAD~1-et.

Mi az a .gitignore és mire való?

.gitignore — egy fájl, amely felsorolja azon fájlok és könyvtárak mintáit, amelyeket a Git-nek figyelmen kívül kell hagynia. Az ideiglenes fájlok, build-ek és IDE-konfigurációk repozitóriumból való kizárására szolgál.

Mi a különbség a git pull és a git fetch között?

git fetch letölti a változtatásokat a szerverről, de nem egyesíti őket az aktuális ággal. git pull elvégzi a fetch-et és azonnal végrehajtja a merge-t. Az ellenőrzéshez használja a fetch + diff megtekintése, majd kézi merge módszert.

Hogyan javítható az utolsó commit üzenete?

Használja a git commit --amend-et — ez a parancs megnyitja a szerkesztőt a commit üzenetének módosításához. Ha a commit már a szerveren van, git push --force szükséges, ami veszélyes a megosztott ágak számára.

Összefoglalás

  • Git — Linus Torvalds elosztott verziókezelő rendszere, amely a szoftverfejlesztés szabványává vált.
  • A commitok pillanatképeket rögzítenek a fájlok állapotáról SHA-1 hash-sel és hivatkozással az előző commitra.
  • Az ágak — könnyű mutatók a commitokra, lehetővé téve a funkciók párhuzamos fejlesztését.
  • Merge két szülős merge-commitot hoz létre, Rebase — felülírja az előzményeket a lineáris gráfhoz.
  • A távoli repozitóriumok (origin) push és pull segítségével szinkronizálják a kódot a fejlesztők között.
  • GitHub, GitLab, Bitbucket webes felületet, kód-ellenőrzést és CI/CD-t adnak a Git fölé.
  • Kezdje a repozitórium klónozásával és három parancs elsajátításával: commit, push, pull — lefedik az alap munkaciklust.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is