Git gyorstalpaló

> Mi is az a Git?

> Telepítés

Használat (alapok)

> Git Extensions

Git Gui

A Git Gui egy grafikus felület a Githez Linuxban és Windowsban is. A Git Extensions-nél butább, de azért sokmindenre elég ez is. Először nézzük meg, hogy hogyan hozunk létre új repót. Hozzunk létre valahol egy sajat nevű könyvtárat, tegyünk vagy írjunk bele egy filet. (Ékezetet semilyen filenévben és felhasználónévben sem érdemes használni. :-) ) A Git Gui-nak Windowsban külön ikonja van a Start menüben a Git-ben, illetve ha kitettük az asztalra akkor ott, Linuxban parancssorból

$ git gui

Legelőször megkérdezi, hogy csináljon-e új repót, klónozzon (másoljon) egyet, vagy egy létezőt nyisson meg. Mondjuk neki, hogy csináljon új repót, ezután adjuk meg neki az előbb létrehozott sajat könyvtárat. Ekkor feljön a Git Gui ablak, és Unstaged Changes/Kiválasztatlan változások alatt ott lesz a file-unk. Ekkorra a könyvtárban egy .git könyvtár is van, ez a Git adatbázisa.

Mielőtt megnéznénk mi mindent tud a Git, itt van a másik módszer egy repó létrehozására: klónozunk egyet egy központi Szerver nevű gépen levő repónkról. Ezt csak akkor csináljuk, amikor legelőször hozzuk le a repót, és még nincs saját másolatunk. Csukjuk be a Git Gui-t, és nyissuk ki újra. (Ha megint a sajatot nyitja meg kérdezés nélkül, akkor csukjuk be megint, ki kell mennünk a könyvtárból mielőtt újra megnyitjuk a Git Guit). Mi a Szerverről ssh-n keresztül fogjuk hozni-vinni a cuccainkat, ezért ezt írom le (de megjegyzésképp a Git működik http-n, rsync-en, és egy saját git protokollján keresztül is). Az elején most mondjuk azt, hogy klónozzon/másoljon. Megkérdezi honnan, hát innen:

projfelh@valami.szerver.hu:proba

azt is megkérdezi hova, írjunk be egy létező könyvtárat, majd a végére tegyük hozzá, hogy /proba. Ezután ha minden jól ment a publikus rsa kulccsal, ahogy itt írtam, akkor kis töprengés után azt mondja rendben, és feljön a Git Gui ablak. Ekkorra ahol mondtuk neki ott létrehozott egy proba könyvtárat, és beletette a proba project filejait a Szerver repójából (felteszem, hogy ott már ez létre lett hozva korábban). A könyvtárban egy .git könyvtár is van, ez a Git adatbázisa.

Most, hogy minden jól legyen, az

Edit/Szerkesztés --> Opciók

pontban ellenőrizzük / adjuk meg a nevünket és emailcímünket. Sok egyéb beállítható dolog is van, ne piszkáljuk. :-) Most változtassunk valamit valamelyik fileon, majd a Git Guiban klikkeljünk oda, hogy

Rescan/Keresés újra

Ekkor megjelenik (ha még nem volt ott) a file-unk a piros csík alatt, esetleg valamilyen változások is a sárga csík alatt. Most ki kell jelölnünk, hogy mely fileokat ajánljuk a Git figyelmébe: klikkeljünk rá a file(ok)ra a piros csík alatt, majd

(felső menüben) Commit --> Stage to commit/Kiválasztás commitolásra

hogy átkerüljön a zöld csík alá (Staged Changes/Kiválasztott változtatások). (Ha nem új a file, csak változott, akkor alul van egy

Változtatások kiválasztása/Stage Changed

gomb is, azzal egyszerűbb.) Ezután egy commit üzenetet írjunk a jobb alsó ablakba, pl., hogy "Elso commit". Humanitárius okokból itt ne használjunk ékezeteket. :-) Majd alul klikkeljünk rá a

Commit

gombra. Ezzel a változások / az új fileunk bekerült a Git (egylőre csak helyi) adatbázisába. (Megjegyzés: meg lehet mondani a Git-nek, hogy bizonyos fileok engem sosem érdekelnek, részletek itt.)

Most a megváltozott adatbázisunkat szeretnénk visszatölteni a Szerverre. Ha klónozással szereztük az adatbázist, akkor ehhez csak arra kell klikkelnünk, hogy

Push

a felugró ablakban mindent úgyhagyni, és Push mégegyszer.

Ha viszont a sajat könyvtárunkról az adatbázis újonan készült, akkor el kell küldeni emailben a nevét annak, aki a Szerveren a projfelh usert adminisztrálja, hogy tudathassa a Szerverrel, hogy lesz egy ilyen új adatbázis rajta. Ha tudatta vele, akkor a következőket kell tenni:

Remote/Távoli --> Add/Hozzáadás

névnek írjunk be akármit (pl. Szerver/sajat), helynek pedig azt, hogy

projfelh@valami.szerver.hu:sajat   majd
Do nothing else now/Ne csináljunk semmit

mert már ezt a repót létrehozták a Szerveren (üresen!). Ha ez megvan, akkor most lehet arra klikkelnünk, hogy

Push

a felugró ablakban mindent úgyhagyni, és Push mégegyszer. Ha minden jól megy, most felkerültek a Szerver központi sajat repójába a filejaink.

Ha ezután valamikor máskor dolgozni szeretnénk mondjuk a proba projecten, akkor (ha épp nincs meg a könyvtárunk benne a ./git adatbázissal, klónozzuk, lásd fent, ha pedig megvan, akkor)

Remote/Távoli --> Fetch from/Letöltés innen
[amit a proba repó létrehozója megadott, pl.] origin

ez lehozza a Szerver proba nevű repóját, de még nem veti össze a filejainkkal. Ehhez még az kell, hogy

Merge --> Local/Helyi merge
Tracking/Követő branch

Ez már valójában összeveti a letöltött repót a mienkkel, és frissíti a saját könyvtárunkat (ha kell).

Ha sokan piszkálták egyszerre a proba könyvtárat és fel-le töltögettek a központi adatbázisba, a Git legtöbbször olyankor is tudja frissíteni a saját könyvtárunkat (pull) vagy a központi könyvtárat (push), kitalálja hogyan egyesítse a változásokat. Ha ez mégsem sikerülne, klikk ide, ide vagy ide.

A Git tud különbségeket (diff) nézni a saját és a központi repó között, de a Git Gui ezt nem tudja, vagy csak én nem tudom hogy tudja.


Verziókezelés. Hasznos a történelem megtekintése:

Repository/Repó --> vizualizálás

Minden egyes commitnak lesz egy ronda neve, ez itt látszik az SHA1 ID sorban. Ha valamelyik korábbi commitot megnéznénk,

Branch --> Checkout
Revision Expression/kifejezés

alatt be kell írni a ronda név első pár karakterét. Ha nem adtunk meg elég sok karaktert, a Git Gui panaszkodik, adjunk meg még párat a ronda névből. Ekkor a könyvtárunkban visszaáll a ronda nevű commitnak megfelelő állapot. Ne ijedjünk meg, nem vesztettük el amit azóta írtunk, egy

Branch --> Checkout
Local/Helyi branch

visszaállítja a legutóbb commitolt verziót a könyvtárunkban.


Elágazás. Tegyük fel, hogy kipróbálnánk valamit, de nem vagyunk biztosak benne, hogy jó lesz a vége. Ekkor elágazhatunk:

Branch --> Create/Létrehozás --> kiserleti

ez létrehoz egy kiserleti ágat a könyvtárunkból. Ezen dolgozhatunk, commitolhatunk ahogy eddig, pusholhatjuk is.

Branch --> Checkout
Local/Helyi branch --> master

visszavisz minket a fő ágba, illetve hasonlóan válthatunk a kísérleti ágba, mindannyiszor változnak a fileok is a könyvtárunkban. Ha írtuk kicsit a kísérleti ágat, esetleg a fő ágat is, és a kísérlet jól sikerült, akkor beolvaszthatjuk a fő ágba:

Merge --> Local/Helyi Merge --> kiserleti

Ha a merge mégsem sikerülne, klikk ide, ide vagy ide. Sikeres merge után a kísérleti ágat kitörölhetjük:

Branch --> Delete/Törlés


Tisztítás / tömörítés. Előfordulhat, hogy a .git könyvtárunk túl nagyra nőtt, vagy már felesleges objektumokat tartalmaz. (Ez ténylegesen meg is történik, ha különböző gépeken tárolt .git könyvtárakat a Git tudtán kívül szinkronizálunk.) Ezen segít egy tömörítés/tisztítás:

Repository/Repó --> Compress Database/Adatbázis tömörítése

Elkerülendő a "Jaj mégsem kellett volna kitörölnöm" problémákat olyan .git-beli objektumokkal amiket amúgy a Git a hatóköréből már kiiktatott, a fenti klikk csak a két hétnél régebbi és a Git adatbázisában már feleslegessé vált objektumokat törli. (Tehát nem a két hétnél regebbi verziókat, azok természetesen megmaradnak ezután is.) További részletek itt és itt.

További olvasnivaló: Git könyv (az első fejezet ijesztő, de nem kell); privát ssh repo.

> Parancssorból

> Központi ssh repository telepítése (elsősorban az ssh Git Szerver üzemeltetőjének szól)