Git gyorstalpaló
> Mi is az a Git?
> Telepítés
∨ Használat (alapok)
∨ Git Extensions
A Git Extensions egy grafikus felület Windowsban a Githez, okosabb, mint a Git Gui alább, úgyhogy aki ezt használja annak a Git Guit és a parancsoros leírást alább nem kell elolvasni. 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 célszerű használni. :-) ) A Git Extensions elvileg már az Asztalon van (tehén), ha mégsem, a Start menüben ott kell lennie. Kezdő felületén először a
menüben csupa zöld csíkot kell látnunk. Ha valami piros szereljük meg, nekem otthon rögtön minden zöld volt. Megjegyzés az Intézet Octopus nevű szerveréhez: első indításkor nem találja a Git programokat, mert ezek nem a szokásos helyekre lettek telepítve, hanem:
- Git:
|
C:\Program Files (x86)\main\Git\bin\git.exe
|
- KDiff3:
|
C:\Program Files (x86)\main\KDiff3\kdiff3.exe
|
Ezen kívül az Octopuson egy shell extensions tartalmú csík piros marad, de ez úgy tűnt nem okoz problémát.
Ezután a
fülben ellenőrizzük, hogy a nevünk és email címünk jól van-e beírva, ha nem, javítsuk. A Settings bezárása után klikkeljünk oda, hogy
adjuk meg az előbb létrehozott sajat könyvtárat, és legyen ez egy Personal repository (és nem Central). Ekkor létrjön a könyvtárunkban egy .git adatbázis, amiben még nincsen benne a fileunk. Nekem egy zöld nyíl keringett körbekörbe amíg rá nem klikkeltem, hogy Refresh (két zöld görbe nyilacska) a bal felső sarokban. Ezután egy szürkés ablak jön fel egy Edit .gitignore és egy Commit gombbal. Az előzőt egyelőre hagyjuk, klikkeljük a
gombra. Ez felhoz egy ablakot a fileunkkal. Nyomjuk meg, hogy
ezzel ajánlottuk a filet a Git figyelmébe. Ezután a jobb alsó részbe írjunk valami olyasmit, hogy "Elso commit". Humanitárius okokból itt ne használjunk ékezeteket. :-) Majd alul klikkeljünk rá a
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, erre való a .gitignore file, részleteket tud a Google.)
Mielőtt megnézzük mi mást 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 Extensiont, és nyissuk ki újra. 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 klikk oda, hogy
Megkérdezi honnan, hát innen:
projfelh@valami.szerver.hu:proba
|
a Destination pedig legyen egy létező könyvtár, melynek végére odaírjuk, hogy proba, legyen Personal repó. Utána nyissuk meg (felajánlja).
A fő ablakban a repó történelmét láthatjuk, alatta a három fül: Commit, File tree, Diff további infókat ad a repóról. Változtassuk most meg valamelyik fileunkat, majd klikk oda felül, hogy
A felugró ablakban látjuk a változásokat,
árhúzza a file(okat) az alsó Staged files ablakba, írjunk commit megjegyzést, majd alul
Most a megváltozott adatbázisunkat szeretnénk visszatölteni a Szerverre. Ha klónozással szereztük az adatbázist, akkor ehhez csak a fent található
kell kattintani. Ha viszont új sajat nevű repót hoztunk létre, akkor emailben el kell küldeni a nevét annak, aki a Szerveren a projfelh felhasználót kezeli, hogy tudathassa a Szerverrel, hogy lesz egy ilyen új adatbázis rajta. Ha tudatta vele, akkor a következőket kell tenni:
kék ↑ felnyíl (Push)
|
Remote: projfelh@valami.szerver.hu:sajat
|
majd Push. Ekkor ha minden jól ment feltettük a repónkat a Szerverre. Érdemes a Push menüben a
ablakba egy nevet adni a fenti projfelh@valami.szerver.hu:sajat címnek, hogy ne kelljen mindig beírni.
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)
kék ↓ lenyíl (Pull) --> Manage remotes --> Remote repositories
|
alatt adhatunk egy nevet a repónak, és érdemes a
fülben elérni, hogy a Local branch name és a Default merge with is legyen master. Fontos még, hogy a Pull menüben a
is legyen a master, és legyen a pont ott, hogy Merge remote branch to current branch. Ezután ha minden jól megy, Pull frissíti a repónkat.
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, Google segít (branching and merging).
Verziókezelés. A Diff fül mindeközben megmutatja mi változott az egyes verziók között. Ha egy korábbi verzió érdekel minket,
Commands --> Checkout revision
|
a könyvtárunkban visszaállítja a megfelelő korábbi állapotot. Ne ijedjünk meg, nem vesztettük el amit azóta írtunk, egy
[kék ceruza] --> Local branch --> master
|
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:
Commands --> Create branch
|
egy új ágat csinál, és aztán a kék ceruzával lehet váltogatni az ágak között. A fileok könyvtárunkban mindig megfelelően változnak. Lehet szerkeszteni, stage-elni és commitolni ahogy eddig, bármelyik ágban, pusholni is lehet, közben figyeljünk, hogy melyik ágat melyikbe nyomjuk. 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: váltsunk a fő ágba, majd
Commands --> Merge branches
|
Ha a merge mégsem sikerülne, Google segít (branching and merging).
Commands --> Delete branch
|
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:
Settings --> Git maintenance --> Compress git database
|
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.) Ez a klikk a git gc utasítást adja ki, melyről további részletek itt.
További olvasnivaló: Git könyv (az első fejezet ijesztő, de nem kell); privát ssh repo.
> Git Gui
> Parancssorból
> Központi ssh repository telepítése (elsősorban az ssh Git Szerver üzemeltetőjének szól)