Git-adattár — a projekt forráskódjának tárháza, amelyben a Git nyomon követi a fájlok minden változását a fejlesztés során. Az adattár tartalmazza a commitok, ágak és címkék teljes előzményét, lehetővé téve a fejlesztőknek a közös munkát a kódon. A Git, 2024 adatai szerint az adattár minden verziókezelő rendszer alapja, és világszerte millió projektben használják.
Főbb pontok
Git-adattár — egy adatstruktúra, amelyben a verziókezelő rendszer tárolja a projektfájlok változástörténetét leíró metaadatokat és objektumokat. Amikor a fejlesztő inicializálja az adattárat a git init paranccsal, a Git létrehozza a rejtett .git mappát a projekt gyökerében.
Ezen mappán belül található az összes objektum, hivatkozás és konfigurációs fájl, amely a rendszer működéséhez szükséges. Az adattár nincs konkrét helyhez kötve — a fejlesztő létrehozhatja lokálisan, majd csatlakoztathatja egy távoli szerverhez.
A Git az elosztott adattár modelljét használja: a projekt minden résztvevője teljes előzménymásolattal rendelkezik a saját számítógépén. Ez azt jelenti, hogy a műveletek többsége — commit, előzmények megtekintése, ágak létrehozása — lokálisan történik a szerver megkeresése nélkül.
A Git dokumentációja szerint az elosztott architektúra ellenállóvá teszi a rendszert a hibákkal szemben: ha a szerver meghibásodik, bármely lokális adattár forrásul szolgálhat a projekt teljes előzményének helyreállításához.
Lokális adattár — a projekt másolata a fejlesztő számítógépén. Tartalmazza a commitok, ágak és címkék teljes előzményét, és lehetővé teszi a commit, branch, merge és rebase műveletek végrehajtását hálózati kapcsolat nélkül.
Távoli adattár egy szerveren található, és szinkronizációs pontként szolgál a csapat összes tagja számára. A fejlesztők a git push paranccsal küldik el változtatásaikat, és a git pull paranccsal töltik le mások változtatásait.
A lokális és távoli adattár közötti kapcsolat a remote origin — a Git konfigurációjában tárolt szerver URL — segítségével állítható be. Egy lokális adattár több távoli adattárhoz is csatlakoztatható, ami forkokkal való munka során hasznos.
Ennek a modellnek a fő előnye, hogy a fejlesztő offline módban dolgozhat a kódon, és csak akkor szinkronizálja a változtatásokat, amikor kész az eredmény elküldésére.
| Jellemző | Lokális | Távoli |
|---|---|---|
| Elhelyezkedés | A fejlesztő számítógépén | Szerveren (GitHub, GitLab) |
| Hálózat nélküli hozzáférés | Teljes hozzáférés minden művelethez | Kapcsolat nélkül nem érhető el |
| Szinkronizálás | Push/Pull a távolival | Fogadja a push-t a lokálistól |
| Biztonsági mentés | Nincs védve az adatvesztéstől | Szerveren tárolva biztonsági mentésekkel |
A Git tárolási modellje alapvetően különbözik más verziókezelő rendszerektől. A verziók közötti változáslista (delTák) tárolása helyett a Git a projekt összes fájljának teljes pillanatképét tárolja minden commit alkalmával.
Az adattárban lévő minden objektumot egy egyedi, 40 karakter hosszú SHA-1 hash azonosít. Ha a fájl tartalma nem változott a commitok között, a Git nem hoz létre új objektumot, hanem újra felhasználja a meglévőt — ez helyet takarít meg.
A Git négy objektumtípust használ: blob (fájltartalom), tree (könyvtárszerkezet), commit (pillanatkép metaadatokkal) és tag (elnevezett hivatkozás egy commitra). Minden objektum a .git/objects mappában tárolódik.
A Git Internals szerint a Git objektummodellje biztosítja az adatok integritását: a fájltartalom bármilyen változása új hash-t eredményez, ami lehetetlenné teszi az előzmények észrevétlen módosítását.
A .git mappa — az adattár szíve. Nélküle a Git nem tudja nyomon követni a változásokat, és egy hétköznapi könyvtár csak fájlok gyűjteménye marad. Ennek a mappának a szerkezetének megértése segít az adattárral kapcsolatos problémák diagnosztizálásában.
A HEAD fájl külön figyelmet érdemel. Normál állapotban szimbolikus hivatkozást tartalmaz egy ágra, például ref: refs/heads/main. Detached HEAD állapotban közvetlenül egy commitra mutat — ez azt jelenti, hogy az új commitok nem lesznek egyetlen ághoz sem kötve.
A Git-adattárral való munka olyan alapvető műveletek sorozatát foglalja magában, amelyeket a fejlesztő naponta végez. Minden művelet megváltoztatja az adattár állapotát, új objektumokat adva hozzá vagy hivatkozásokat mozgatva.
A push és pull műveletek — az egyetlenek, amelyek kapcsolatot igényelnek a távoli szerverrel. Az összes többi művelet teljesen lokálisan történik, ami nagy munkasebességet biztosít még nagy előzmény esetén is.
Az adattárban lévő minden fájl négy állapoton megy keresztül: untracked (nem követett), modified (módosított), staged (előkészített) és committed (commitolt). A Git csak azokat a fájlokat követi, amelyeket explicit módon hozzáadtak a git add paranccsal, vagy már szerepelnek a commitelőzményekben.
Ennek a modellnek a megértése — a hatékony Git-munka kulcsa. A fejlesztő szelektíven csak a módosított fájlok egy részét készítheti elő commithoz, logikailag teljes commitokat létrehozva egyértelmű leírásokkal.
A távoli adattárakat általában speciális platformokon tárolják, amelyek webes felületet, hozzáférés-kezelő rendszert és további eszközöket biztosítanak a közös fejlesztéshez.
A platform kiválasztása a csapat méretétől, az adatvédelmi követelményektől és a szükséges integrációktól függ. Mobilos fejlesztéshez gyakran a GitHub-ot választják a széles körű közösségi támogatás és az iOS-hez és Androidhoz készült CI/CD eszközökkel való integráció miatt.
Vizsgáljunk meg egy gyakorlati forgatókönyvet: egy fejlesztő klónoz egy meglévő adattárat, létrehoz egy új ágat, változtatásokat hajt végre, és elküldi azokat a szerverre. Minden parancs bemutatja az adattár különböző összetevőivel való munkát.
# Távoli adattár klónozása
git clone https://github.com/user/mobile-app.git
# Átlépés a projekt könyvtárába
cd mobile-app
# Új feature ág létrehozása és arra váltás
git checkout -b feature/auth
# Módosított fájlok állapotának ellenőrzése
git status
# Összes változtatás hozzáadása a staging area-hoz
git add .
# Commit létrehozása leírással
git commit -m "Add authentication module"
# Változtatások elküldése a távoli adattárba
git push origin feature/auth
A git status parancs — az egyik leghasznosabb a mindennapi munkában. Megmutatja, hogy mely fájlok módosultak, melyek készültek fel a commithoz, és melyeket nem követ a Git egyáltalán.
Az adattár előzményeinek elemzéséhez a git log parancsot használjuk különböző formázási jelzőkkel. Megjeleníti a commitok időrendjét, azok szerzőit, dátumait és SHA-1 azonosítóit.
# Előzmények megtekintése az ággráf vizualizációjával
git log --oneline --graph --all
# Változtatások megtekintése egy adott commitban
git show a1b2c3d
# Aktuális állapot összehasonlítása az utolsó committal
git diff HEAD
# Egy adott fájl előzményeinek megtekintése
git log --follow src/MainActivity.kt
A --graph jelző ASCII-gráfot jelenít meg az elágazásokról, ami különösen hasznos a több ágban aktívan dolgozó adattárakban. A gyakori kiadásokkal rendelkező mobilprojektek esetében a vizuális gráf segít gyorsan felmérni a fejlesztési struktúrát.
Gyakran Ismételt Kérdések
Adattár — a kód technikai tárháza változástörténettel. Projekt — tágabb fogalom, amely magában foglalja az adattárat, a feladatkezelő rendszert, a dokumentációt és a fejlesztési folyamatokat. Egy projekt több adattárat is tartalmazhat.
Hozzon létre egy új adattárat a GitHub webes felületén a New gombra kattintva. Adja meg a nevét, leírását és hozzáférési szintjét. Ezután klónozza az adattárat a lokális gépre, vagy csatlakoztasson egy meglévő lokális adattárat a git remote add origin paranccsal.
Ha a távoli adattárat törölték a szerverről, de legalább egy fejlesztő rendelkezik lokális másolattal, az adattár visszaállítható. Elég létrehozni egy új távoli adattárat, és végrehajtani a git push --force parancsot a lokális másolatból a teljes előzménnyel.
Fork — egy másik személy adattárának másolata az Ön fiókjában. Teljes előzménymásolatot kap, és bármilyen változtatást végrehajthat anélkül, hogy az eredeti befolyásolná. A fork-okat a Pull Requesteken keresztüli open-source projektekben való részvételre használják.
Használja a git gc parancsot az objektumok tömörítésére és az elérhetetlen adatok eltávolítására. Távolítsa el a nagy fájlokat az előzményekből a git filter-branch vagy a git filter-repo segítségével. Bináris fájlokat tartalmazó projektekhez fontolja meg a Git LFS (Large File Storage) használatát.
Összegzés
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.
Olvassa el is