Írta: tom1964h

A helyi repository működése

Git verziókezelés

A repó fizikailag egy mappában található tehát, amelyben (és az alkönyvtárakban) történő változásokat a Git program követi (tracking).

A working directory-ban (munkakönyvtárban) a Git rögzíti a változásokat: minden file vagy tracked vagy untracked állapotú (status) lehet:

  • a tracked állományokról a Git tud (lásd alul a színes státus-táblák)
  • az untracked állományok alatt minden mást értünk - minden olyan fájlt a munkakönyvtárban, ami nem commit-ált vagy nincs a stage-en


A file-ok státuszának életciklusa - forrás git-scm.com

A tracked, azaz a repóban kezelt file-ok állapotváltozása ciklikus:

  • comitted (unmodified) azaz a file biztonságosan tárolódik a repó-ban; ez egy snapshot azaz pillanatfelvétel;
  • modified azaz amikor bármilyen változás történik a fájlban, a fájl állapota módosítottra változik; a dokumentum megváltozott az utolsó committált verziója óta, amelyet a local repó-ba mentettünk: „jelenleg dolgozunk ezen a fájlon, még mindig lesznek változások”;
  • staged azaz a file módosítását befejeztük, a file készen áll arra hogy hozzáadjuk a local repó-hoz; a git add ... (Stage the file) hozzáadja az állományt a stage-hez, a git reset ... vagy a git restore ... pedig leveszi azt a stage-ről.



Ignoring files

Van arra lehetőség, hogy a working directory-ban kizárjunk a nyomkövető tracking működésből bizonyos állományokat pl.kiterjesztés alapján (terveket, ábrákat, emlékeztetőket, stb.). Ezt a tiltólisát a .gitignore leíró tartalmazza. Ezek jellemzően .pdf vagy .docx vagy .class vagy egyéb file-ok is lehetnek. Minden, ami forráskód, kerüljön be a repóba, minden, ami fordított, maradjon ki.

Git local repó - eszközök

A következő parancs-kombinációk terminálon, PoweShell-ben vagy Linux terminálon értelmezendők, a desktop alkalmazás kezelését külön mutatom.

git init ....

  • létrehoz egy local repó-t abban a könyvtárban, ahol épp a kurzor van. Ha nem vagy biztos benne akkor a dir (Windows) vagy a pwd (Linux) parancsokkal le tudod kérdezni.
  • ha egy alkönyvtárba szeretnéd bele-generáltatni az új repót, akkor írd a git init parancs után a repó nevét (második példa).
  • a repó fizikai könyvtárában létrejön egy rejtett .git mappa, amely a verziókezelő adatbázisát tartalmazza. Ehhez ne nyúlj!

git status
git status -s
Az aktuális könyvtárról ad vissza információt (ha üres repót talál, javasolja, hozzak létre file-okat és adjam a repóhoz).

git add ...
A hivatkozott file-okat hozzáadja a stage-hez. A Git lehetővé teszi, hogy ekkor még el tudjuk dönteni, hozzáadjuk-e a file-t a repóhoz, vagy sem. Erre szolgál a stage (színpad) állapota. Ez egy átmeneti állapot, vagy lekerül onnan egy állomány, vagy bekerül a repó-ba.

git commit -m ....
A stage tartalmát hozzáadja a repóhoz, amit ellát az -m után szereplő megjegyzéssel:

  • egy file csak egy commitban szerepeljen !
  • minden commit csak egy feladathoz tartozik !
  • minden commitnak egyedi betű/szám azonosítója van !

git log
Kilistázza a repó történetét (a log-ot), időben fordított sorrendben: a legutolsó van legfelül. Minden commit után szereplő azonosító a commit ID-ja. A git commit parancsok után visszaadott azonosító ennek az ID-nak az első 7 jegye.

Local repó törlése
Abban a könyvtárban, ahol a repó megtalálható (és a rejtett .git mappa is van) mindent kitörlünk (grafikus ablakban vagy a terminálon parancsokkal) a helyi repónk megszűnik. Ha volt hozzá kötve távoli repó, akkor onnan, vagy egy mentés, akkor onnan még visszaállíthatjuk, ha nem, akkor végleg törlődnek az adatok. Óvatosan, mert egy át nem gondolt takarítási rohamban értékes kódsorokat is elveszthetünk!