Mi az a Git és hogyan működik?
Verziókezelés, repository, commit, branch és a Git belső modellje.
Mi az a Git és hogyan működik?
Verziókezelés
A verziókezelés (version control) egy olyan rendszer, amely rögzíti a fájlok változásait az idő múlásával. Ezzel lehetővé válik, hogy visszatérjünk egy korábbi állapothoz, összehasonlítsuk a különböző verziókat, megtaláljuk, mikor és ki vezette be egy adott változtatást, illetve párhuzamosan dolgozzunk különböző funkiókon.
A Git egy elosztott verziókezelő rendszer (distributed VCS), ami azt jelenti, hogy minden fejlesztőnél megtalálható a teljes repository másolata a teljes előzménnyel együtt. Nincs szükség állandó hálózati kapcsolatra – a legtöbb műveletet lokálisan végezzük el.
Repository
A repository (röviden: repo) egy könyvtár, amelyet a Git felügyel. Tartalmaz minden fájlt, a teljes változástörténetet, az ágakat (branch-eket), a tageket és a beállításokat.
Kétféle repository létezik:
- Lokális repository: a saját gépünkön lévő másolat, ahol dolgozunk
- Remote repository: egy szerveren (pl. GitHub, GitLab, Bitbucket) tárolt, megosztott verzió
A Git a repository adatait a .git mappában tárolja a projekt gyökerében.
Commit
A commit a Git alapegysége: egy pillanatfelvétel (snapshot) a projekt aktuális állapotáról. Minden commit tartalmaz:
- egy egyedi azonosítót (SHA-1 hash, pl.
a3f2c1d) - a szerző nevét és e-mail-címét
- egy időbélyeget
- egy üzenetet, amely leírja a változtatás célját
- egy mutatót az előző commitra (szülő commit)
A commitok egy irányított aciklikus gráfot (DAG) alkotnak, amelyen a teljes változástörténet visszakövethető.
Branch (ág)
A branch egy könnyűsúlyú mutató, amely egy adott commitra mutat. Segítségével párhuzamosan dolgozhatunk különböző funkciókon, és csak akkor egyesítjük a változtatásokat, ha készen állnak.
Az alapértelmezett branch neve általában main (korábban master). Minden új commit automatikusan előrébb tolja az aktuális branch mutatóját.
A Git belső működése – három terület
Munkakönyvtár Staging area (Index) Lokális repository
(Working directory) (.git mappa)
[módosított fájlok] ---git add---> [staged fájlok] ---git commit---> [commit history]- Munkakönyvtár: ahol a fájlokat szerkesztjük
- Staging area (index): ahol összeállítjuk a következő commitot
- Lokális repository: ahol a commitok végleges állapotban tárolódnak
Rövid összefoglaló
- A Git elosztott verziókezelő, amely lokálisan tárolja a teljes változástörténetet.
- A repository a projekt és előzményeinek tárolóhelye; a
.gitmappában lakik. - A commit a változások pillanatfelvétele, egyedi hash-sel azonosítva.
- A branch egy könnyűsúlyú mutató egy adott commitra.
- A Git három területen dolgozik: munkakönyvtár, staging area, repository.