GIT alapok

Git egy nyílt forráskódú, elosztott verziókezelő alkalmazás. A Git fejlesztője eredetileg Linus Torvalds volt, aki a Linux kernel fejlesztéséhez készítette azt el. Minden Git munkamásolat - egy teljes értékű repository - teljes verziótörténettel és teljes revíziókövetési lehetőséggel, amely alapvetően nem függ a hálózat elérésétől vagy központi szervertől.

Alapvetően a Git annyit csinál, hogy amikor azt mondjuk neki (commit), akkor az aktuális munkakönyvtárunkban megjelölt fájlokról és alkönyvtárakról csinál magának egy helyi adatbázist, másolatot a .git nevű alkönyvtárba. Mindennek köszönhetően:

  • nyomon tudja követni, hogy mi és hogyan változott a munkakönyvtárunkban,
  • vissza tud állni bármelyik korábban (commit-olt) állapotába a könyvtárunkat,
  • szinkronizálni tudja munkakönyvtárunk tartalmát egy másik gépen levő hasonló könyvtárral, közben intelligensen átvezeti a változásokat.

Alapvető fogalmak

  • repository, repo: az adatok változásának nyomon követése, illetve ezen folyamat során keletkező információk adatstruktúrákban történő tárolása
  • workspace, working directory: az adott project gyökérkönyvtára, mely fájlokat könyvtárakat és alkönyvtárakat tartalmaz
  • snapshot: a könyvtárak, fájlok aktuális állapota, egy adott pillanatban akár egy fotó a teljes kódról.
  • staged, cached: azokat a fájlok, amelyek módosítva lettek és az állapotukról, verziójukról, tartalmukról snapshot készült
  • Commit: az a folyamat, amely során a Git a megjelölt és a staging area-ban lévő fájlokról készült snapshot-okat a .git könyvtárában, azaz a lokális adatbázisában tárolja el, valamint és egy SHA-1 hash kódot generál, amellyel az adott pillanatképre hivatkozik.
  • HEAD: az utolsó kommitra történő hivatkozás
  • branch: egy névvel ellátott fejlesztési ág, a kommitok egymásutánja 
  • MASTER: default branch
  • tag: egyedi címkével ellátott pillanatkép

A Git három pillére

A verziókezelés három legfontosabb állomása:

  1. working directory
  2. staging area
  3. local repository

GIT alapok_1

A Git tekintetében a fájlok két nagy csoportra oszthatóak, untracked és tracked fájlokra. Az untracked fájlok azok, melyek még nem verziókezeltek, nem készült róluk snapshot. A fentiekből következik, hogy a tracked jelölésű fájlok azok, melyek változásai szerepelnek a staging area-ban vagy a local repository-ban. A tracked állapotú fájloknak mtovábbi három stációja lehetséges:

  • unmodified: a fájl nem módosult a legutolsó commitot követően
  • modified: a fájl módosult a legutolsó commit óta, de nem került még staging area-ba (nem szerepelt a git add parancsban), így a következő commit nem fogja szerepeltetni a local repository-ban sem
  • staged, cached: a fájl módosult a legutolsó commit óta, hozzá lett adva a staging area-hoz (git add paranccsal), a következő commit részét fogja képezni

Mutatkozzunk be a git-nek

A Git első használata előtt érdemes bemutatkozni a Git számára. A verziókezelés során az egyes commit-okhoz automatikusan hozzáfüzi a módosítást végző személy nevét és e-mail címét. Ezen adatokat az alábbi parancsok segítségével tehetjük meg:

$ git config --global user.name ""
$ git config --global user.email ""

A verziókezelés alap folyamata

Első lépés egy új local repository létrehozása, mely a git init paranccsal hajtható végre. A parancs hatására abban a könyvtárban melyben kiadtuk azt (továbbiakban gyökérkönyvtár), létrejön .git elnevezésű alkönyvtár, amely a local repository-t reprezentálja. Ebben az alkönytárban fogja a tárolni a Git verziókezeléshez kapcsolódó adatokat. A git init parancs kiadását követően a gyökérkönyvtár valamennyi változását - fájlokkal és alkönyvtárakkal kapcsolatos változásokat - érzékelni fogja a Git.

Ha létrehozunk egy fájlt, akkor azt a Git érzékeli és automatikusan untracked jelöléssel látja el (nem része az indexnek, a fájl még nem verziókezelt). Ahhoz, hogy célunkat elérjük és a verziókezelés alá vonjuk a fájlt, a git add paranccsal hozzá kell azt adnunk az indexhez. A parancs hatására az adott fájlról:

  1. egy pillanatkép készül a local repoba,
  2. az elkészült pillanatképet reprezentáló hash kód feljegyzésre kerül a staged area-ba, a fájl tracked / staged jelölésűre változik.

A commit parancs hatására a fájl állapota és tartalma mentésre kerül a local repoba és a fájl jelölése unmodified-re módosul. Amenyiben módosítjuk a fájlunkat, az modified jelölésűre változik és ahhoz, hogy újból commit képessé tegyük ismét a git add parancsot kell használnunk...

Folytatás következik...

git, verziókezelés, working directory, staging area, local repository,